86

Pythonで改行区切りファイルを読み取るときに、改行を取り除くための最良の方法を決定しようとしています。

私が思いついたのは次のコードで、テストする使い捨てコードが含まれています。

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
4

7 に答える 7

199
lines = open(filename).read().splitlines()
于 2009-02-13T06:35:50.797 に答える
24

これがあなたが要求したことをするジェネレータです。この場合、rstripを使用するだけで十分であり、stripよりもわずかに高速です。

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

ただし、これを使用して、末尾の空白も削除することをお勧めします。

lines = (line.rstrip() for line in open(filename))
于 2009-02-13T08:35:46.047 に答える
11

このアプローチについてどう思いますか?

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

ジェネレータ式は、ファイル全体をメモリにロードすることを回避しwith、ファイルを確実に閉じる

于 2011-08-08T07:26:31.353 に答える
8
for line in file('/tmp/foo'):
    print line.strip('\n')
于 2009-02-13T06:36:08.847 に答える
3

私はこれを使います

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

それから私はこのようなことをすることができます。

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

または、空行を削除したり、コメント行をスキップしたりなど、追加の関数を使用して clean を拡張することもできます。

于 2009-02-13T11:07:27.710 に答える
2

私は次のようにします:

f = open('test.txt')
l = [l for l in f.readlines() if l.strip()]
f.close()
print l
于 2009-02-13T06:43:59.983 に答える