我正在尝试学习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
答案 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());