2015-03-19 85 views
0

我得到一个关于Python与CSV结合的问题。用Python获取匹配的csv行

我想在一个CSV文件中的特定列内检查特定的ID,找到的结果都连接到输入:


CSV:

CSV FILE


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

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

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

回答

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'] 
+0

谢谢!真棒!这正是我想要的! – Rotan075 2015-03-19 12:37:37

3

这可以轻松实现使用pandas

import pandas as pd 
df = pd.read_csv(csvfile, sep=' ', quotechar='|') 
df[df['Row1'] == 'b0074'] 

将筛选数据框,并返回其中“ROW1”有值