在Python中读取文件时忽略空行的最简单方法
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了在Python中读取文件时忽略空行的最简单方法,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1418字,纯文字阅读大概需要3分钟。
内容图文
我有一些代码读取名称文件并创建一个列表:
names_list = open("names", "r").read().splitlines()
每个名称都用换行符分隔,如下所示:
Allman
Atkinson
Behlendorf
我想忽略任何只包含空格的行.我知道我可以通过创建循环并检查我读取的每一行然后将其添加到列表(如果它不是空白)来完成此操作.
我只是想知道是否有更多的Pythonic方式呢?
解决方法:
我会堆叠生成器表达式:
with open(filename) as f_in:
lines = (line.rstrip() for line in f_in) # All lines including the blank ones
lines = (line for line in lines if line) # Non-blank lines
现在,行是所有非空白行.这样可以避免两次调用线路上的条带.如果你想要一个行列表,那么你可以这样做:
with open(filename) as f_in:
lines = (line.rstrip() for line in f_in)
lines = list(line for line in lines if line) # Non-blank lines in a list
你也可以用单行代码(exlude with statement)来实现它,但它不再有效且难以阅读:
with open(filename) as f_in:
lines = list(line for line in (l.strip() for l in f_in) if line)
更新:
我同意这是因为重复令牌而丑陋.如果您愿意,您可以编写一个生成器:
def nonblank_lines(f):
for l in f:
line = l.rstrip()
if line:
yield line
然后称之为:
with open(filename) as f_in:
for line in nonblank_lines(f_in):
# Stuff
更新2:
with open(filename) as f_in:
lines = filter(None, (line.rstrip() for line in f_in))
并在CPython上(具有确定性引用计数)
lines = filter(None, (line.rstrip() for line in open(filename)))
在Python 2中使用itertools.ifilter如果你想要一个生成器,在Python 3中,如果你想要一个列表,只需将整个事物传递给列表.
内容总结
以上是互联网集市为您收集整理的在Python中读取文件时忽略空行的最简单方法全部内容,希望文章能够帮你解决在Python中读取文件时忽略空行的最简单方法所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。