2016-08-09 3 views
-2

Я читаю файл за строкой и пытаюсь разобрать часть каждой строки и делать с ней все. информация, что я пытаюсь разобрать 25 строкКак назначить несколько значений массиву строк в python

Я пытался сделать

for i in info: 
    Consequence=i[0]  
    IMPACT=i[1] 
    . 
    . 
    HGNC_ID = i[24] 

, но очевидно, что есть лучший способ сделать это. Я попытался составить список всех строк и инициализировать их как пустые строки, а затем сделал:

    for counter,val in enumerate(info_list): 

        try: 
         val=i[counter] 
         break 
        except: 
         val="" 

где

info_list=(Allele,Consequence...) 

Это не работает, хотя, он печатает пустые строки и счетчик всегда нуль, хотя длина info_list равна 25.

Что было бы лучшим способом присвоить эти значения? (имейте в виду, что некоторые «информация» могут иметь 23 или 24 значения в массиве, в этом случае я хотел бы присвоить пустую строку отсутствующим значениям, отсутствующие значения будут только в конце, поэтому нет путаницы, поскольку к которым отсутствуют переменные)

Сообщите мне, если я могу добавить дополнительную информацию!

Спасибо! :)

+0

Если вы читаете из файла, и это похоже на формат CSV, вы сэкономите массу проблем, используя 'DictReader' – SuperSaiyan

ответ

0

В вашей первой версии кода, похоже, не так много ошибок. Я не знаю, почему вы думаете, что «очевидно» должен быть лучшим способом.

Одна вещь, которую вы можете сделать, чтобы сделать это немного яснее:

if len(info) == 25: 
    Consequence, IMPACT , . . ., HGNC_ID = info 
elif len(info) == 24: 
    Consequence , IMPACT , . . ., HGNC_ID = info + '' 

Но я сомневаюсь, что будет делать это намного лучше.

Что вы можете рассмотреть, это не использование переменных, а хеш-таблицы или именованного кортежа для значений, которые вы читаете из строки.

Смежные вопросы