2015-03-19 35 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」有值