Лучший способ для чтения новых строк с разделителями в 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 

Предложения?

  • Случайные N строк Python из большого файла (без дубликатов строк)
  • Чтение строки строки по строкам в элементах массива в Python
  • Как избежать буферизации файловой системы Python
  • Преобразовать \ r текст в \ n, так что readlines () работает по назначению
  • Закладка вкладки python Mac OSX 10.7 (Lion)
  • Как проверить завершение readline Python?
  • Как использовать vi-ключи в ipython под * nix?
  • Функциональность Readline для окон с помощью python 2.7
  • 7 Solutions collect form web for “Лучший способ для чтения новых строк с разделителями в Python и отбрасывания новых строк?”

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

    Вот генератор, который делает то, что вы просили. В этом случае использование rstrip достаточно и немного быстрее полосы.

     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... 

    Выражение генератора позволяет избежать загрузки всего файла в память и обеспечивает закрытие файла

    Просто используйте выражения генератора:

     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") ) ) 

    Или, я могу продлить очистку с помощью дополнительных функций, например, для удаления пустых строк или пропустить строки комментариев или что-то еще.

    Я бы сделал это так:

     f = open('test.txt') l = [l for l in f.readlines() if l.strip()] f.close() print l 
    Python - лучший язык программирования в мире.