Python读取txt至列表过滤空值:原判断失效原因及一行实现
问题分析与解决
原判断失效的原因
你写入文件时,列表里的空字符串会被转成单独的换行符\n(比如用'\n'.join(humans)写入的场景)。读取时,readlines()会把这些空白行读成'\n',而非''。你的判断条件if line != ''无法匹配'\n',所以空行对应的元素会被保留,最终结果里仍有空字符串。
一行解决的写法
直接在过滤条件里检查行是否为空白内容(包括只含换行符的情况),同时完成处理:
[line.rstrip() for line in f if line.strip()]
- 直接迭代文件对象
f比readlines()更高效,无需一次性加载所有行到内存。 line.strip()会移除换行符、空格等所有空白字符,只要原行是空白状态(不管是'\n'还是含空格的空行),strip()后都会变成'',在if判断中会被视为False,从而被过滤掉。
如果仅需排除单纯的换行行(允许含空格的行),也可以用更精准的判断:
[line.rstrip() for line in f.readlines() if line != '\n']
内容的提问来源于stack exchange,提问作者KevOMalley743
相关产品推荐
相关产品推荐

