2013-03-24 81 views
0

这里是我的代码主要错误在Python

with open('yvd.txt') as fd: 
    name='Trevor Jones' 
    input=[x.split('|') for x in fd.readlines()] 
    to_search={x[0]:x for x in input} 
    print('\n'.join(to_search[name])) 

我试图寻找一个名字在一个大文件并打印下面的信息,减去分隔符。这是文本文件的一部分

| Trevor Jones | 1 | MOV | White Male | Light | 10 || 3000 | 2500 |老人生活在退休家庭|

但是,当我运行该脚本时,我得到一个关键错误,指出“KeyError:'Trevor Jones'”,因为Trevor Jones存在于文件中,所以没有意义。

任何人有任何想法?

+3

打印出'to_search',看看它的样子。 – Blender 2013-03-24 02:00:43

回答

3
>>> text = '|Trevor Jones|1|MOV|White Male|Light|10||3000|2500|Old Man Living In Retirement Home|' 
>>> x = text.split('|') 
>>> x 
['', 'Trevor Jones', '1', 'MOV', 'White Male', 'Light', '10', '', '3000', '2500', 'Old Man Living In Retirement Home', ''] 

在这里你可以看到问题:x[0]''。 我只是用text.strip('|').split('|')

如果你想知道为什么这样,想想使用'|'.join(x),它需要能够重建它。

+0

这是完美的!谢谢! – user1985351 2013-03-24 02:04:04