Python 从文件读取时,两行被解释为一行

Python 从文件读取时,两行被解释为一行,python,file-io,Python,File Io,我试图逐行读取一堆文件,并从中提取标题 for i in range(2, 43): file = open('/instances/instance' + repr(i) + '.txt') lines = file.readlines() header = [int(x) for x in lines[0].split()] print(repr(i) + ':', header) 虽然有些标题提取得很好,但有些标题与下面的行连接在一起。输出为: 2: [1

我试图逐行读取一堆文件,并从中提取标题

for i in range(2, 43):
    file = open('/instances/instance' + repr(i) + '.txt')
    lines = file.readlines()
    header = [int(x) for x in lines[0].split()]
    print(repr(i) + ':', header)
虽然有些标题提取得很好,但有些标题与下面的行连接在一起。输出为:

2: [1, 3, 50, 5]
3: [1, 1, 50, 5]
4: [1, 5, 75, 2]
5: [1, 6, 75, 5]
6: [1, 1, 75, 10]
7: [1, 4, 100, 2]
8: [1, 5, 100, 5]
9: [1, 1, 100, 8]
10: [1, 4, 100, 5]
11: [1, 4, 139, 5]
12: [1, 3, 163, 5]
13: [1, 9, 417, 7]
14: [1, 2, 20, 4]
15: [1, 2, 38, 40, 30]
16: [1, 2, 56, 40, 40]
17: [1, 4, 40, 40, 20]
18: [1, 4, 76, 40, 30]
19: [1, 4, 112, 40, 40]
20: [1, 4, 184, 40, 60]
21: [1, 6, 60, 40, 20]
22: [1, 6, 114, 4]
23: [1, 6, 168, 40, 40]
24: [1, 3, 51, 60, 20]
25: [1, 3, 51, 60, 20]
26: [1, 3, 51, 60, 20]
27: [1, 6, 102, 60, 20]
28: [1, 6, 102, 60, 20]
29: [1, 6, 102, 60, 20]
30: [1, 9, 153, 60, 20]
31: [1, 9, 153, 60, 20]
32: [1, 9, 153, 60, 20]
33: [1, 2, 48, 4500, 200]
34: [1, 4, 96, 4480, 195]
35: [1, 6, 144, 4460, 190]
36: [1, 8, 192, 4440, 185]
37: [1, 10, 240, 4420, 180]
38: [1, 12, 288, 4400, 175]
39: [1, 3, 72, 6500, 200]
40: [1, 6, 144, 6475, 190]
41: [1, 9, 216, 6450, 180]
42: [1, 12, 288, 6425, 170]
instance33.txt
之前,标题提取得非常好。但是,在读取instance33.txt时

1 2 48 4
500 200
500 200
500 200
500 200
前两行解释为一行:

33: [1, 2, 48, 4500, 200]
尽管其他文件的格式相同,但这种奇怪的行为发生在
instance33.txt
之后


原因是什么?

Windows、Linux和OS X对新行“\n”、“\n\r”、“\r”使用不同的代码。编辑器也可以使用不同的代码。但是open应该识别所有类型


您可能还有一些Python无法正确解释的换行符。如果您知道
instance33.txt
中的行数,我会尝试
assert len(lines)=file_length[I]
,其中
file_length[33]
是您知道的行数。Windows、Linux和OS X对新行'\n'、'\n\r'、'\r'使用不同的代码。编辑器也可以使用不同的代码。但是
open
应该识别所有类型。若要添加到@furas comment,我会说您可能在窗口中,并且文件33不知何故被损坏,仅该行有一个错误的“新行”\n“或“\r”。我建议您使用编辑器打开该文件,强制该行中断,然后重试。@furas我认为您是对的。当用Notepad++编辑时,我看到有不同的换行符。Java的
writeline
\n
放了不同的换行符。如果你把这个作为回答,我很乐意接受。