如何将* .tab文件转换成字典?

时间:2019-04-15 06:19:22

标签: python-3.x nltk

我正在尝试将* .tab文件转换为字典。文件中有16列和154行,包括标题。标题行和第4列到第13列应忽略。字典的键是一个字符串元组,例如('tiger,cat')

我用代码尝试了一个已经存在的解决方案,但是显示的输出不是我期望的。这是.tab文件的前几行

Word 1  Word 2  Human (mean)    1   2   3   4   5   6   7   8   9   10  11  12  13  
love    sex 6.77    9   6   8   8   7   8   8   4   7   2   6   7   8   
tiger   cat 7.35    9   7   8   7   8   9   8.5 5   6   9   7   5   7   
tiger   tiger   10.00   10  10  10  10  10  10  10  10  10  10  10  10  10  
book    paper   7.46    8   8   7   7   8   9   7   6   7   8   9   4   9   
computer    keyboard    7.62    8   7   9   9   8   8   7   7   6   8   10  3   9   
computer    internet    7.58    8   6   9   8   8   8   7.5 7   7   7   9   5   9   
plane   car 5.77    6   6   7   5   3   6   7   6   6   6   7   3   7   
train   car 6.31    7   7.5 7.5 5   3   6   7   6   6   6   9   4   8   
telephone   communication   7.50    7   6.5 8   8   6   8   8   7   5   9   9   8   8   

这是我使用的代码:

import csv

with open('set1.tab') as set1:
    # skip the first line
    next(set1)
    list_of_dicts = list(csv.DictReader(set1, dialect='excel-tab'))

预期结果应为:{('tiger','cat'):7.35,....}

但这是我的实际结果:

[OrderedDict([('love', 'tiger'),
              ('sex', 'cat'),
              ('6.77', '7.35'),
              ('9', '9'),
              ('6', '7'),
              ('8', '7'),
              ('7', '5'),
              ('4', '5'),
              ('2', '9'),
              ('', '')]),

1 个答案:

答案 0 :(得分:0)

这应该做到:

import csv

with open('set1.tab') as set1:
    # skip the first line
    next(set1)
    rows = csv.reader(set1, dialect='excel-tab')
    dict_data = {(fields[0], fields[1]): fields[2:] for fields in rows if len(fields) >= 2}
    print(dict_data)