2016-04-14 15 views
2

Büyük bir .csv dosya ile çalışmama yardımcı olmak için küçük bir komut dosyası yazdım, ancak şu anda birkaç sorun yaşıyorumcsv.DictReader kullanarak, bir dize aramak ve sonra bu dize içeren satır yazdırmak istiyorum

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

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

Bu: ... programın ana olarak

bir giriş girmesini ister, sonra (sadece seçeneğini biri gösteriliyor) ... şöyle, bu seçeneklerden atıfta bir işlevini çağırır Response_one işlevini açıp dosyayı açar ve girilen kullanıcının aradığı ID değişkeninin 0123'de nerede bulunduğunu bulup Bu satırı yazdırmadan önce,. Şimdiye kadar böyle bir şeye sahibim:

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

Bu noktaya internetten birkaç şey takip ederek ulaştım ama şimdi sıkıştım. Ben böyle 'ENSG00000210049' olarak tablo içinde var biliyorum kimlikleri ile test ettik, ama şu hata mesajını alıyorum: Herhangi bir yardım derece mutluluk duyacağız

NameError: name 'ENSG00000210049' is not defined 

.

+0

CSV'deki için bazı örnek verileri gönderebilir miyim? – Mani

+0

Python 2.x veya 3.x kullanıyor musunuz? 'input()' bu sürümlerde farklıdır. –

+0

Hey, Python 2.x kullanıyorum ve masamın birazcık gibi görünüyor; kimliği, Gen, Protein 1, x1, x2 2, X3, X4 korkunç tablo için Özür dilerim, harika –

cevap

4

Ana sorun, input işlevinin çalışmasıdır. Sen çünkü this hatasını alıyorsanız:

giriş fonksiyonunu Python 2.7, değerlendirir neyse senin girmek, bir Python ifadesi olarak. Dizeleri okumak istiyorsanız, dizelerini değerlendirmeyecek olan Python 2.7'de raw_input işlevini kullanın.

Python 3.x kullanıyorsanız, girdiye raw_input yeniden adlandırıldı. Python 3.0 salınımını aktaran


notları Ama size dışarı sıralamak için güzel bir örnek vermek sağlar. Python 3 için Python 2 için

data.csv

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

Örnek Kod

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

Örnek Kod

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

Örnek

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

, bu harika çalıştı .. o stackoverflow tabloları desteklemez görünüyor. –

+0

Mükemmel, Sorunuzu yanıtladığını düşünüyorsanız cevabımı kabul edebilirsiniz. (Sadece size yeni bir kullanıcı olduğunuzu hatırlatıyorum) –

+0

: P np, aslında 'kabul' düğmesini bulmaya çalışıyordum. Çok teşekkürler –