2015-07-16 2 views
1

У меня есть этот кусок кода:Как получить конкретный столбец в строке (CSV)

with open(filepath, 'rb') as csvfile: 
    reader = csv.reader(csvfile, delimiter=' ') 
    for row in reader: 
     print(' '.join(row)) 

и возвращает:

Type,UniProt ID,Position 
Sodium channel,P35498,1-123 
Sodium channel,P35498,176-188 
Sodium channel,P35498,234-239 
Sodium channel,P35498,426-762 
Sodium channel,P35498,823-830 
Potassium channel ATP-sensitive inward rectifier,P48048,1-77 

Я хотел бы иметь возможность поставить P35498 в строка для использования позже. Как мне это сделать? Я также хотел бы иметь возможность получить любой из этих столбцов, но просто пример с P35498 будет отличным, спасибо!

Если я

with open(filepath, 'rb') as csvfile: 
    reader = csv.reader(csvfile, delimiter=',') 
    idlist = [] 
    for row in reader: 
     idlist.append(row[1]) 
     print(idlist) 

Это возвращается:

['UniProt ID'] 
['UniProt ID', 'P35498'] 
['UniProt ID', 'P35498', 'P35498'] 
['UniProt ID', 'P35498', 'P35498', 'P35498'] 
['UniProt ID', 'P35498', 'P35498', 'P35498', 'P35498'] 
['UniProt ID', 'P35498', 'P35498', 'P35498', 'P35498', 'P35498'] 
['UniProt ID', 'P35498', 'P35498', 'P35498', 'P35498', 'P35498', 'P48048'] 
+0

Итак, вы хотите получить только строку, которая имеет 'p35498' – The6thSense

+0

Да, но мне бы хотелось распечатать всю строку. @VigneshKalai – mkpappu

+0

Каков ваш ожидаемый результат – The6thSense

ответ

0

На самом деле, просто делает

with open(filepath, 'rb') as csvfile: 
    reader = csv.reader(csvfile, delimiter=',') 
    for row in reader: 
     uniprot_id = row[1] 
     print uniprot_id 

работы.

+0

Этот код точно такой же, как - unitprot_id = row [1]; print uniprot_id', почему вы используете большой маршрут soooo? –

+0

@AnandSKumar Я собирался создать список со всеми идентификаторами, но я решил против него и просто не редактировал его ... и я положил 'uniprot_id_list = []' в неправильное место ... спасибо, что напомнил мне , Я бы на самом деле сохранил его там! – mkpappu

1

row список, вы можете использовать индексы, чтобы получить данные для соответствующего столбца. Например, для столбца ID, который является второй столбец, поэтому индекс 1, вы будете использовать -

with open(filepath, 'rb') as csvfile: 
    reader = csv.reader(csvfile, delimiter=',') 
    idlist = [] 
    for row in reader: 
     idlist.append(row[1]) 
    print(idlist) 

В конце концов, idlist будет список всех идентификаторов в формате CSV.

Кроме того, в соответствии с вашим примером, вы должны использовать , в качестве разделителя.

Как сказано в комментариях вопрос, если задать печатать строку с определенным идентификатором можно использовать -

with open(filepath, 'rb') as csvfile: 
    reader = csv.reader(csvfile, delimiter=',') 
    for row in reader: 
     if 'P35498' in row[1]: 
      print(' '.join(row)) 
+1

Я думаю, что фактическим идентификатором является 'UniProt ID', который является столбцом 2, и будет индексом 1, поэтому' row [1] ' –

+0

Да, спасибо, разделитель в соответствии с примером должен быть' , 'не пространство. –

+1

@AnandSKumar исправьте меня, если я ошибаюсь, но он сказал, что все строки правы – The6thSense

1

Если вы хотите строку, которая имеет «P35498» в колонке 2 можно проверить столбец 2 и печать так, когда он же:

with open(filepath, 'rb') as csvfile: 
    reader = csv.reader(csvfile, delimiter=' ') 
    for row in reader: 
     if "P35498"==row[1]: 
      print(' '.join(row)) 
Смежные вопросы