我与Python结合使用了一个关于Python的问题。
我想检查CSV文件中特定列中的特定ID,并查找结果是否已连接到输入:
CSV:
我想要做的是当用户输入: b0074 时,我想返回所有结果: b00ph,b11ph,b22ph ,b33ph
我怎样才能在Python中做到这一点?任何人都可以帮我编码吗?我开始这样做了:
with open('serials.csv') as csvfile:
csvreader = csv.reader(csvfile, delimiter=' ', quotechar='|')
答案 0 :(得分:3)
使用pandas:
可以轻松实现import pandas as pd
df = pd.read_csv(csvfile, sep=' ', quotechar='|')
df[df['Row1'] == 'b0074']
将过滤数据框并返回'Row1'具有该值的所有行
答案 1 :(得分:2)
由于您似乎想要使用CSV模块,因此可以使用列表推导来过滤CSV文件中的行。下面,将第0列(行[0])中的项目与您的键值(b0074)进行比较。如果它们匹配,则将列1添加到列表推导的结果中。
import csv
key = 'b0074'
with open('serials.csv') as csvfile:
reader = csv.reader(csvfile, delimiter=' ', quotechar='|')
result = [row[1].strip() for row in reader if row[0].strip() == key]
>>> result
['b00ph', 'b11ph', 'b22ph', 'b33ph']
这相当于循环的“正常”:
import csv
key = 'b0074'
result = []
with open('serials.csv') as csvfile:
reader = csv.reader(csvfile, delimiter=' ', quotechar='|')
for row in reader:
if row[0].strip() == key:
result.append(row[1].strip())
>>> result
['b00ph', 'b11ph', 'b22ph', 'b33ph']