Python单代码行实现:筛选含全元音开头单词行的txt文件
问题排查与修正
你的代码逻辑搞反了——当前判断的是「某行里存在至少一个元音开头的单词」,但需求是「某行里所有单词都以元音开头」,这才导致错误输出了所有txt文件。
修正后的一行代码
import os; print([f for f in os.listdir('.') if f.endswith('.txt') and any(all(word[0].lower() in {'a','e','i','o','u'} for word in line.split()) for line in open(f))])
关键逻辑说明
- 用
import os;把导入语句和主逻辑合并,满足一行代码的要求 any(...):只要文件内存在至少一行符合要求,就把该文件纳入结果all(word[0].lower() in {'a','e','i','o','u'} ...):严格检查当前行的所有单词首字母(转小写兼容大写元音)都属于元音集合- 用集合而非列表存储元音,查找效率更高
可选优化(排除空行)
如果需要排除空行(空行的all(...)会返回True,因为没有不满足的元素),可以加上line.strip()判断:
import os; print([f for f in os.listdir('.') if f.endswith('.txt') and any(line.strip() and all(word[0].lower() in {'a','e','i','o','u'} for word in line.split()) for line in open(f))])
内容的提问来源于stack exchange,提问作者alxnom334
相关产品推荐
相关产品推荐

