我有一些代码可以读取名称文件并创建列表:
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
现在,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
您也可以采用单行代码(排除with
语句)来执行此操作,但是它不再高效且更难阅读:
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
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)))
itertools.ifilter
如果需要生成器,请在Python 2中使用;如果需要列表,请在Python 3list
中使用。
问题内容: 我有一些代码可以从文件中读取行,我想识别行何时开始或fisrt字符(非空白)为’ ‘并忽略它,因此在while语句中添加如下内容 我有类似的东西: 如何完成代码? 问题答案:
问题内容: 在Python中,我刚刚阅读了一个文本文件中的一行,并且我想知道如何编写代码以忽略该行开头带有#的注释。 我认为应该是这样的: 但是我是Python的新手,我不知道语法 问题答案: 您可以使用startswith() 例如
问题内容: 我有一个很大的文件4GB,当我尝试读取它时,我的计算机挂起了。因此,我想逐个读取它,并且在处理完每个块之后,将已处理的块存储到另一个文件中并读取下一个块。 这些零件有什么方法吗? 我很想有一个简单的方法。 问题答案: 要编写一个简单函数,只需使用: 另一个选择是使用和辅助功能: 如果文件是基于行的,则文件对象已经是行的惰性生成器:
本文向大家介绍python简单读取大文件的方法,包括了python简单读取大文件的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了python简单读取大文件的方法。分享给大家供大家参考,具体如下: Python读取大文件(GB级别)采用的办法很简单: 例如: 一切都交给python解释器处理,读取效率很高,且占用资源少。 stackoverflow参考链接:How to read la
本文向大家介绍Python按行读取文件的简单实现方法,包括了Python按行读取文件的简单实现方法的使用技巧和注意事项,需要的朋友参考一下 1:readline() 一行一行得从文件读数据,显然比较慢; 不过很省内存; 测试读10M的sample.txt文件,每秒大约读32000行; 2:fileinput 写法简单一些,不过测试以后发现每秒只能读13000行数据,效率比上一种方法慢了两倍多; 3
问题内容: 我有一个问题,当java应用程序读取Excel文件.xlsx扩展名时,该应用程序正常工作,但是在工作簿中有很多工作表,其中1、2个工作表正确读取,但是当读取3个工作表时,没有读取所有单元格当我打开并从Excel文件中检查时,单元格存在空值,但是当apache poi读取该单元格时,该单元格将被忽略。原因是什么? 更新资料 在读取excel文件上方,虽然我在一行中检查了Excel文件20