我已经找到了解决方法,但我无法找到一个,奇怪的是。
我正在打开一个包含以下内容的文件。
score_list = []
def opening_file():
counter = 0
with open('scores.txt', newline='') as infile:
reader = csv.reader(infile)
for row in reader:
score_list.append(row[0:5])
counter = 0
while counter != 5:
counter +=1
row[counter] = int(row[counter])
print (score_list)
opening_file()
我想将score_list中的所有值从1-4索引值转换为整数。我尝试过以下这样做,但它不起作用。
[['Alex', '10', '0', '6', '3'], ['Bob', ' 6', '3', '7', '2']]
但它不起作用而只是产生
[['Alex', 10, 0, 6, 3], ['Bob', 6, 3, 7, 2]]
而不是{{1}}
答案 0 :(得分:2)
您正在转换row
中的项目,这只是一次性变量。此外,您不需要那些多余的工作,您只需将行解包到name
和scores
部分并使用列表解析来将数字转换为整数。
with open('scores.txt', newline='') as infile:
reader = csv.reader(infile)
for row in reader:
name, *scores = row
score_list.append([name] + [int(i) for i in scores])
答案 1 :(得分:1)
您的a()
循环转换var x = 6;
var y = 4;
var a = function(b) {
return function(c) {
return y + b + c;
}
};
x = 2;
y = 5;
var fn = a(x);
x = 1;
y = 3;
console.log(fn(5)) // prints 10 = y + b + c
// 3 + 2 + 5
中的值发生得太晚了。每行的值已经(通过切片操作)复制到已附加到while
的新列表中。而且你只在最后一行运行循环(假设你的问题中的缩进是正确的。)
尝试这样的事情:
row
我在一个范围而不是score_list
循环上使用with open('scores.txt', newline='') as infile:
reader = csv.reader(infile)
for row in reader:
for i in range(1,5):
row[i] = int(row[i])
score_list.append(row[0:5])
循环,只是因为它更方便(for
循环版本可以工作很好,它只需要更多的线条)。关键是要在while
的循环内更改while
,然后再将行切成row
到reader
。
答案 2 :(得分:1)
首先,代码转换row
数组中的项目,但是您打印score_list
数组。其次,因为它改变了阅读器外部的row
变量for循环,它只改变了最后一行。你可以这样做:
import csv
def opening_file():
with open('scores.txt', newline='') as infile:
return [[row[0]] + [int(x) for x in row[1:]] for row in csv.reader(infile)]
score_list = opening_file()
print(str(score_list))