чтение строк на питоне без \ n? - PullRequest
3 голосов
/ 04 февраля 2009

Будет ли это работать на всех платформах? я знаю, что Windows делает \ r \ n, и помню, что слышал, как Mac делает \ r, в то время как Linux это сделал \ n. Я запустил этот код в Windows, поэтому он выглядит нормально, но кто-нибудь из вас знает, является ли он кроссплатформенным?

while 1:
    line = f.readline()
    if line == "":
        break
    line = line[:-1]
    print "\"" + line + "\""

Ответы [ 3 ]

13 голосов
/ 04 февраля 2009

Прежде всего, есть универсальная поддержка новой строки

Второе: просто используйте line.strip(). Используйте line.rstrip('\r\n'), если вы хотите сохранить пробелы в начале или конце строки.

Ох и

print '"%s"' % line

или хотя бы

print '"' + line + '"'

может выглядеть немного лучше.

Вы можете перебирать строки в файле следующим образом (это не будет разбивать пустые строки в середине файла, как ваш код):

for line in f:
    print '"' + line.strip('\r\n') + '"'

Если ваш входной файл достаточно короткий, вы можете использовать тот факт, что str.splitlines по умолчанию отбрасывает окончания строк:

with open('input.txt', 'rU') as f:
    for line in f.read().splitlines():
        print '"%s"' % line
4 голосов
/ 04 февраля 2009

Попробуйте вместо этого:

line = line.rstrip('\r\n')
0 голосов
/ 04 февраля 2009

line = line [: - 1]

В строке не может быть завершающего символа новой строки, если это последняя строка файла.

Как предложено выше, попробуйте универсальные переводы строк с помощью rstrip ().

...