读取tsv列并存储在字典中,导致无值

时间:2018-09-06 04:50:15

标签: python python-2.7 csv dictionary text

我有一个以下格式的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 :(得分:0)

对我来说,它就像是一种魅力。

检查是否使用正确的模式读取文件。

答案 1 :(得分:0)

Python中没有rd模式。使用rbrU。您的代码可以正常工作。

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))