2016-04-14 38 views
2

我已經在Python中編寫了一個小腳本來幫助我處理一個大的.csv文件,但我目前有幾個問題...使用csv.DictReader,我想搜索一個字符串,然後打印包含該字符串的行

在主節目的它提示輸入用戶,然後調用參照這些選項,像這樣...(僅示出一個選項)的函數:

def Main(): 
    response = input('1, 2 or 3? ') 

    if response == 1: 
     ID = input('Enter your ID: ') 
     Response_one(ID) 

這功能Response_one然後打開文件,我希望它通過搜索並找到用戶輸入的ID變量在.csv,打印該行之前。到目前爲止,我有這樣的事情:

def Response_one(ID): 
    file_csv = csv.DictReader(open('my_file.csv')) 
    for row in file_csv: 
     if row['ID'] == ID: 
      print row 

我到了這一點,在網上幾件事情,但我現在卡住了。我一直在用,我知道該表中存在諸如「ENSG00000210049」的ID進行測試,但我得到的錯誤信息:

NameError: name 'ENSG00000210049' is not defined 

任何幫助將非常感激。

+0

你能後的CSV一些示例數據? – Mani

+0

你使用Python 2.x還是3.x?在這些版本中'input()'是不同的。 –

+0

嘿,我使用的Python 2.x和我的表看起來有點像; ID,基因,蛋白質 1,X1,X2 2,X3,X4 我道歉了可怕的表,它似乎計算器不支持表.. –

回答

4

您的主要問題是input函數。你得到,因爲this錯誤:

輸入功能在Python 2.7,評估無論您輸入,作爲 Python表達式。如果您只想讀取字符串,那麼請在Python 2.7中使用 raw_input函數,該函數不會評估讀取的 字符串。

如果您使用Python 3.x,則raw_input已被重命名爲輸入。 引用python 3.0發行說明


但是讓我們給你一個很好的例子,你理清。用於Python 3

data.csv

ID,DATA 
1,a 
2,b 
3,c 

用於Python 2示例代碼

id = raw_input('what id?: ') 
with open('data.csv', 'rb') as f: 
    for row in csv.DictReader(f): 
     if row['ID'] == id: 
      print row 

示例代碼

id = input('what id?: ') 
with open('data.csv', 'rb') as f: 
    for row in csv.DictReader(f): 
     if row['ID'] == id: 
      print row 

what id?: 1 
{'ID': '1', 'DATA': 'a'} 
+0

真棒,這是偉大的工作。 –

+0

非常好,如果您覺得它回答了您的問題,您可以接受我的答案。 (我只提醒你,因爲你是一個新用戶) –

+0

:P np,我實際上正在努力尋找'接受'按鈕。非常感謝 –

相關問題