满足条件的制作一张列表

2024-06-16 18:22:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个包含以下数据的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]
[]

请帮忙?我想坚持使用列表


Tags: 文件csv数据代码testtxt元素列表
1条回答
网友
1楼 · 发布于 2024-06-16 18:22:43

您正在为每一行创建列表,而不是在循环外只创建一次列表

你也在重新发明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))

但是用更紧凑的符号

相关问题 更多 >