使用Python获取匹配的csv行

时间:2015-03-19 12:07:24

标签: python python-2.7 csv python-3.x

我与Python结合使用了一个关于Python的问题。

我想检查CSV文件中特定列中的特定ID,并查找结果是否已连接到输入:


CSV:

CSV FILE


我想要做的是当用户输入: b0074 时,我想返回所有结果: b00ph,b11ph,b22ph ,b33ph

我怎样才能在Python中做到这一点?任何人都可以帮我编码吗?我开始这样做了:

with open('serials.csv') as csvfile:
     csvreader = csv.reader(csvfile, delimiter=' ', quotechar='|')

2 个答案:

答案 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']