当我在Python中读取文件时,为什么会从文件中获取重叠的行?

时间:2015-03-10 11:58:12

标签: python python-2.7 overlap

我试图用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

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

1 个答案:

答案 0 :(得分:4)

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

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

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

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

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

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

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