Python 读取tsv列并存储在字典中,结果为无值

Python 读取tsv列并存储在字典中,结果为无值,python,python-2.7,csv,dictionary,text,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,

我有一个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
读入两个字典,第一列作为
。我有以下示例可编译代码,但它将值存储为
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’(第一个)’,无,无)


我正在使用python 2.7。先谢谢你

它对我来说很有魅力


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

python中没有模式为
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))

小心
start[y]
end[y]
,而不是
y
,它会变成
,对我来说非常适合(确保file.tsv由选项卡分隔)。你能证实这个文件有制表符而不是空格吗?@lucas谢谢你刚刚编辑了这个问题,它会增加这个问题的内容。嗨,你说的模式是什么意思?正如我声明的那样,我使用了“rd”。我想没有像“rd”这样的模式。你指的是“rb”吗?或者它可能是“rD”,令人惊讶的是,这不是错误输出的原因,但它确实是错误的文件读取方法,解释器决定忽略它。谢谢