Лучший метод для чтения файлов с разделителями новой строки в Python и отбрасывания новых строк?
Я пытаюсь определить лучший способ обработки избавления от новых строк при чтении в файлах с разделителями новой строки в 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
предложения?
7 ответов:
вот такой генератор, который делает то, что вы просили. В этом случае достаточно использовать rstrip и немного быстрее, чем strip.
lines = (line.rstrip('\n') for line in open(filename))
однако, вы, скорее всего, захотите использовать это, чтобы избавиться от конечных пробелов тоже.
lines = (line.rstrip() for line in open(filename))
что вы думаете о таком подходе?
with open(filename) as data: datalines = (line.rstrip('\r\n') for line in data) for line in datalines: ...do something awesome...
генератор выражение позволяет избежать загрузки всего файла в память и
with
обеспечивает закрытие файла
просто используйте выражения генератора:
blahblah = (l.rstrip() for l in open(filename)) for x in blahblah: print x
также я хочу посоветовать вам не читать весь файл в памяти - цикл над генераторами намного эффективнее на больших наборах данных.
Я использую этот
def cleaned( aFile ): for line in aFile: yield line.strip()
тогда я могу делать такие вещи.
lines = list( cleaned( open("file","r") ) )
или я могу расширить очистку с помощью дополнительных функций, например, отбросить пустые строки или пропустить строки комментариев или что-то еще.