Чтение столбца tsv и сохранение в словаре, приводящее к значениям None - PullRequest
0 голосов
/ 06 сентября 2018

У меня есть файл tsv со следующим форматом:

first   44  90  org
second  80  49  sport
third   50  52  NIL

Файл был написан с помощью следующего кода:

id = first
before = 44
after = 90
taregt = org
with open('/path/to/file.tsv', 'w') as f:
    result = u'\t'.join([
        id,
        Before,  
        After,
         target])
    f.write(result+'\n')

И я хотел бы прочитать две средние колонки в два словаря как value, а первый столбец как key. У меня есть следующий пример компилируемого кода, однако он хранит значения как None.

start = {}
end = {}
with open('/path/to/file.tsv', 'rd') as f:
    for line in f:
        parts = line.decode('utf-8').split('\t')

        key = parts[0]
        print(key)

        start[key] = parts[1]
        end[key] = parts[2]

        print(key , start.get(key), end.get(key))

выводится на печать:

(u '(first)', None, None)

Я использую Python 2.7. Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 06 сентября 2018

Нет режима как rd в питоне. Используйте либо rb, либо rU. ваш код будет работать нормально.

start = {}
end = {}
with open('path to file', 'rb') as f:
    for line in f:
        parts = line.split('\t')
        key = parts[0]
        # print(key)
        # print parts
        start[key] = parts[1]
        end[key] = parts[2]

        print(key , start.get(key), end.get(key))
0 голосов
/ 06 сентября 2018

Для меня это работает как шарм.

Проверьте, используете ли вы правильный режим для чтения файла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...