为什么在 Python 中读取文件时会出现重叠行?

Why I get overlapped lines from a file when I read it in Python?

我正在尝试读取 Python 中的单个文件并打印它。我正在为此使用此代码:

filename = 'test.txt'

with open(filename, 'r') as f:
    for line in f:
        print line

文件内容('test.txt'),就是下一个:

MYPROGRAM
1   1   16/02/2015  2   4300004734  DOE, JOHN   201512  F/201512    132,00      1               DOE, JOHN   10180063X   ANY ADRESS Nº XX LEVEL DOOR 24397   CITY    STATE   COUNTRY                 2
1   2   16/02/2015  1   7000000000      201512  F/201512        120,00  1                                                           2
1   3   16/02/2015  3   4770000000      201512  F/201512        12,00   1   10,00                                       0   120,00          2

此处未显示的字段之间存在空格、制表符和换行符。

输出是这样奇怪的东西:

1YPROGRA1       16/02/2015      2       4300004734      DOE, JOHN       201512  F/201512      1LEVEL D3OR     16/02/2015TY    3TATE   4770000000              201512  F/2015122             120,00

有些线条与其他线条重叠。为什么?如何在不修改原始文本文件的情况下解决这个问题?

文件 'test.txt' 包含回车符 returns (\r) 但没有换行符 (\n)。

此代码会将整个文件读入一个字符串,将其拆分为回车 returns,然后逐行打印:

with open(filename, 'r') as f:
    s = f.read()

for line in s.split('\r'):
    print line

或者,您可以将其拆分并在一行中打印:

print '\n'.join(s.split('\r'))

第二种方法效率稍高,但恕我直言,第一种方法可读性更高。