如何从CSV文件中选择特定数据并显示该行中的所有数据

时间:2018-07-21 12:44:59

标签: python

我正在尝试编写代码以显示特定学生的所有详细信息。该代码输入性别及其类别,然后显示其所有数据。例如,如果我输入“ Male”和“ 10A”,我希望代码为我提供来自10A年级的男性学生的所有数据。他们的所有信息都存储在CSV文件中(称为详细信息)。到目前为止,我的代码是:

file = open("details.csv","rt")
gender_input = input("Input gender of students")
class_input = input("Input class of students")
for line in file:
    details_of_gender = line.split(",")
    details_of_class = line.split(",")
    gender = str(details_of_gender[7])
    class1 = str(details_of_class[8])
    if gender == "Male":
        if class1 == "10A":
            print(details[0] + " " + details[1] + " " + details[2] + " " + details[3] + " " + details[4] + " " + details[5])
        if class1 == "10B":
            print(details[0] + " " + details[1] + " " + details[2] + " " + details[3] + " " + details[4] + " " + details[5])
    if gender == "Female":
        if class1 == "10A":
            print(details[0] + " " + details[1] + " " + details[2] + " " + details[3] + " " + details[4] + " " + details[5])
        if class1 == "10B":
            print(details[0] + " " + details[1] + " " + details[2] + " " + details[3] + " " + details[4] + " " + details[5])

1 个答案:

答案 0 :(得分:0)

假设您的程序由于仅使用了您之前未定义的变量details而无法运行,这是一种更好的方法:

import csv
with open("details.csv", newline="") as infile:
    reader = csv.reader(infile)                  # use the csv module to read a CSV file!
    for row in reader:
        gender = row[7]
        class = row[8]
        if gender in ("Male", "Female") and class in ("10A", "10B"):
            print(" ".join(row[:6]))             # join elements 0-5 with spaces