Я пытаюсь определить лучший способ избавиться от символов новой строки при чтении файлов с разделителями на новую строку в 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
Предложения?
Ответы:
lines = open(filename).read().splitlines()
источник
Вот генератор, который делает то, что вы просили. В этом случае достаточно использовать 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
обеспечивает закрытие файлаисточник
for line in file('/tmp/foo'): print line.strip('\n')
источник
Просто используйте выражения генератора:
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") ) )
Или я могу расширить clean с помощью дополнительных функций, например, для удаления пустых строк или пропуска строк комментариев или чего-то еще.
источник
Я бы сделал так:
f = open('test.txt') l = [l for l in f.readlines() if l.strip()] f.close() print l
источник
... if l.strip() is not ''
, что мне нужно в моем случае.