在python中将文本文件读入列表

时间:2014-10-07 21:25:30

标签: python python-3.x

我正在尝试学习python。这是我用来将文本文件读入列表的一个小测试程序。这是文本文件:

42 1
35 5
50 2
41 6
42 3
48 4

这是我的代码:

score = [];

for i in range(0, 51):
    score.append(0);

f = open("test1.txt", "r");

for line in f:
    a, b = map(int, f.readline().split());
    score[a] = score[a] + b;

print(score);

我试图用C ++模拟数组中的数组。从文本文件中读取每一行,该行的第一个数字是列表中将保存第二个数字值的位置。出于某种原因,该计划正在跳过第1,第3,第5行。这是我运行程序时的结果。

[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 4, 0, 0]

应该是

[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 6, 4, 0, 0, 0, 0, 0, 4, 0, 2]

知道我可能做错了吗?这是Python 3

3 个答案:

答案 0 :(得分:3)

当你写for line in f:时,它会在文件上循环,一次读一行。

然后,在该循环中,您忽略line而改为f.readline(),它会读取下一行。

因此,您读取第0行,忽略它,读取第1行并处理它。然后读取第2行,忽略它,读取第3行,然后处理它。等等。

只需使用line代替f.readline(),一切都会好的。

答案 1 :(得分:2)

readline()调用是问题所在。您正在使用for line in f遍历每一行,但每次循环时,您都会读取带有readline()额外行,因此它只会读取所有其他行。

答案 2 :(得分:1)

在python中,如果你使用for循环迭代一个文件,那么你可以只使用迭代值:

a, b = map(int, line.split());