2013-03-24 4 views
0

Вот мой кодKey Ошибка в 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])) 

Я пытаюсь найти имя в большой файл и распечатать информацию, которая следует за вычетом сепаратора обеспечивают. Вот часть текстового файла

| Тревор Джонс | 1 | MOV | Белый мужчина | Свет | 10 || 3000 | 2500 | Старый человек, живущий в отставке Главная |

Однако, когда я запускаю скрипт, я получаю ключевую ошибку, говорящую «KeyError:« Тревор Джонс », которая не имеет смысла, потому что Тревор Джонс существует в файле.

У кого-нибудь есть идеи?

+3

Распечатайте 'to_search' и посмотрите, как это выглядит. – Blender

ответ

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