KeyError: Python 'L194' - PullRequest
       18

KeyError: Python 'L194'

0 голосов
/ 04 июля 2018

Вот скриншот файла, с которым я работаю. Содержит «L194». enter image description here

Вот полная строка, просто чтобы показать, что после разбиения в ней всего 5 элементов, как и в других предложениях.

L194 +++ $ +++ u0 +++ $ +++ m0 +++ $ +++ BIANCA +++ $ +++ Можем ли мы сделать это быстро? У Роксаны Коррин и Эндрю Барретта произошел невероятно ужасный разрыв с публикой. Опять же.

movie_lines = open('movie_lines.txt', mode = 'r', encoding = 'utf-8', errors = 'ignore').read().split('\n')
movie_convo_lines = open('movie_conversations.txt', mode ='r', encoding = 'utf-8', errors='ignore').read().split('\n')

map_line_id_with_text = {}

for line in movie_lines:
    extract = line.split('+++$+++')
    if len(extract)== 5:
        map_line_id_with_text[extract[0]] = extract[4]

list_of_lineids = []
for line in movie_convo_lines[:-1]:
    extract = line.split(' +++$+++ ')[-1][1:-1].replace("'","").replace(" ","")
    list_of_lineids.append(extract.split(','))


prompts = []
responses = [] 


for _ in list_of_lineids:
    for i in range(len(_)-1):
        prompts.append(map_line_id_with_text[_[i]])
        responses.append(map_line_id_with_text[_[i+1]])

limit = 0 
for i in range (limit, limit+5):
    print(prompts[i])
    print(responses[i])

Когда я запускаю этот код, я продолжаю получать сообщение об ошибке выше, но файл, который я открыл, содержит «L194», поэтому я не понимаю, почему он не работает. Ошибка отображается в команде prompts.append.

enter image description here

1 Ответ

0 голосов
/ 04 июля 2018

Разделителем строк фильма должно быть ' +++$+++ ' (с пробелами), которое вы правильно использовали во втором цикле for, но в своем первом цикле for вы использовали '+++$+++' (без пробелов) в качестве вместо этого - разделитель, поэтому номера строк, извлеченные там, будут заканчиваться пробелом, в результате чего правильные номера строк из list_of_lineids не будут найдены в map_line_id_with_text.

...