所以,我已经根据输入搜索了显示某个csv字段的方法,并且我尝试将代码应用于我的程序。但问题是我想在csv中获取某个项目并从某个索引创建一个新列表。
我有这样的csv文件:
code,place,name1,name2,name3,name4
001,Home,Laura,Susan,Ernest,Toby
002,Office,Jack,Rachel,Victor,Wanda
003,Shop,Paulo,Roman,Brad,Natali
004,Other,Charles,Matthew,Justin,Bono
起初我有这个代码,它可以显示所有行:
import csv
number = input('Enter number to find\n')
csv_file = csv.reader(open('residence.csv', 'r'), delimiter=",")
for row in csv_file:
if number == row[0]:
print (row)
**input : 001
**result : [001, Home, Laura, Susan, Ernest, Toby]
然后,我尝试在结果中创建一行,将项目添加到新列表中。但它没有用。这是代码:
import csv
res = []
y = 2
number = input('Enter number to find\n')
csv_file = csv.reader(open('residence.csv', 'r'), delimiter=",")
for row in csv_file:
if number == row[0]:
while y <= 5:
res.append(str(row[y]))
y = y+1
print (res)
**input : 001
**expected result : [Laura, Susan, Ernest, Toby]
我想创建一个包含行name1
,name2
,name3
和name4
的新列表,然后我想打印列表。但我猜这个循环错误放置或错过了什么。
答案 0 :(得分:0)
您可以在代码中修复一些事项。
y
变量未重新初始化。无论如何,使用for
循环而不是while
会更加惯用。break
。newline=''
(请参阅csv module docs)'001'
)与整数(1
),这可能是输入输入时的混淆来源。更新版本:
import csv
res = []
number = input('Enter number to find\n')
with open('residence.csv', newline='') as csv_file:
csv_reader = csv.reader(csv_file, delimiter=",")
next(csv_reader) # Skip header line
for row in csv_reader:
if number == row[0]:
for i in range(2, 6):
res.append(str(row[i]))
break
print(res)