我有一个包含以下数据的CSV文件:
1,1,3,2,2,1
2,1,3,2,1,1
3,2,4,2,7,3
4,1,3,2,3,1
5,3,3,1,1,1
我想创建一个列表,其中包含第六列的元素,其中第二列为1。简而言之,我想要的最终结果是[1, 1, 1]
这是我写的代码:
input = open("C:\\test.txt", "r")
for line in input.readlines():
line = line.strip()
no, grade, gpa, sex, preview, review = line.split(',')
listno1 = []
a = float(grade)
if a == 1:
listno1.append(int(review))
当我打印时,结果如下:
[]
[]
[]
[]
[1]
[2]
[]
[]
[4]
[]
请帮忙吗?我有点想坚持使用列表。
答案 0 :(得分:3)
您正在为每一行创建列表,而不是仅在循环外创建一次列表。
你也在重新发明CSV轮;请改用csv
module。因为您只为满足条件的每一行选择一列,所以您可以使用列表推导:
import csv
with open("C:\\test.txt", "r") as infile:
reader = csv.reader(infile)
listno1 = [int(row[5]) for row in reader if int(row[1]) == 1]
这基本上与以下内容相同:
import csv
with open("C:\\test.txt", "r") as infile:
reader = csv.reader(infile)
listno1 = []
for no, grade, gpa, sex, preview, review in reader:
grade = int(grade)
if grade == 1:
listno1.append(int(review))
但是用更紧凑的表示法。