在Python中阅读换行符分隔文件并丢弃换行符的最佳方法?

我正试图确定在Python中使用换行符分隔的文件读取时摆脱换行符的最佳方式。

我想到的是以下代码,包括一次性代码来testing。

import os def getfile(filename,results): f = open(filename) filecontents = f.readlines() for line in filecontents: foo = line.strip('\n') results.append(foo) return results blahblah = [] getfile('/tmp/foo',blahblah) for x in blahblah: print x 

build议?

 lines = open(filename).read().splitlines() 

这是一个发电机,做你所要求的。 在这种情况下,使用rstrip就足够了,比strip还快一点。

 lines = (line.rstrip('\n') for line in open(filename)) 

不过,你很可能会想用这个去除尾随的空格。

 lines = (line.rstrip() for line in open(filename)) 
 for line in file('/tmp/foo'): print line.strip('\n') 

你对这种方法有什么看法?

 with open(filename) as data: datalines = (line.rstrip('\r\n') for line in data) for line in datalines: ...do something awesome... 

生成器expression式避免了将整个文件加载到内存中, with确保closures文件

只需使用生成器expression式

 blahblah = (l.rstrip() for l in open(filename)) for x in blahblah: print x 

此外,我想build议你不要在内存中读取整个文件 – 循环发生器在大数据集上效率要高得多。

我用这个

 def cleaned( aFile ): for line in aFile: yield line.strip() 

然后我可以做这样的事情。

 lines = list( cleaned( open("file","r") ) ) 

或者,我可以用额外的function扩展清理,例如,删除空白行或跳过注释行或其他。

我会这样做:

 f = open('test.txt') l = [l for l in f.readlines() if l.strip()] f.close() print l