Python扁平化代码生成generator对象报错,求问题排查与解决
问题分析与修复建议
核心问题:语法错误导致解析异常
你的扁平化代码存在括号不匹配的语法问题,这是引发错误提示的直接原因:
- 列表推导式末尾多写了一个
),需要删除 - 外层包裹的
(是多余的,无需添加
错误代码片段:
for line in ( [ line for line in content if re.match('(?!word)',line)) ]:
修正后的正确写法:
for line in [ line for line in content if re.match('(?!word)', line) ]:
关于错误提示的解释
因为括号不匹配,Python解析器无法正确识别列表推导式,误将部分代码解析为生成器表达式,所以出现了<generator object <genexpr> at 0x1068b8660>的错误提示,和“列表的列表”无关。
额外优化建议
- 无需提前调用
file.readlines()读取全部内容,直接遍历文件对象更节省内存:
import re with open('file.txt','r') as file: for line in [line for line in file if re.match(r'(?!word)', line)]: print(line, end='') # 避免文件行自带换行导致重复空行
- 如果文件较大,推荐用生成器表达式替代列表推导式,无需一次性生成完整列表:
import re with open('file.txt','r') as file: for line in (line for line in file if re.match(r'(?!word)', line)): print(line, end='')
内容的提问来源于stack exchange,提问作者Cordial
相关产品推荐
相关产品推荐

