Разбор пьесы по ролям через словари (Python)
Нужна помощь! Необходимо из текстового файла разобрать пьесу по ролям(включая слова автора) таким образом:
До:
Кристофер Слай: Ну ясно! — Как мне звать ее?
Лорд: Мадам.
Кристофер Слай: Мадама Элс или мадама Джон?
Лорд: Мадам — и все. Так жен зовут вельможи
После:
Кристофер Слай:
Ну ясно! — Как мне звать ее?
Мадама Элс или мадама Джон?
Лорд: Мадам.
Мадам — и все. Так жен зовут вельможи.
При этом текстовый файл нельзя заранее форматировать перед чтением самой программой.
Сам я начал с такого кода, в котором читается и выводится файл, но отсутствует сам алгоритм, так как не знаю с чего начать:
#Чтение файла
def read_file():
read_success = False
result = []
while(not read_success):
filename = input("Insert your file:")
try:
result = open(filename, encoding="utf-8").readlines()
except FileNotFoundError:
print("File not found!")
continue
if result == []:
print('File is empty!')
continue
try:
result = list(map(str, map(lambda a: a[:-1],result)))
except ValueError:
print("There's nothing to read!")
continue
read_success = True
return result
#Алгоритм
def piece (a):
#Вывод файла
A = read_file()
print(A)
Ответы (1 шт):
Автор решения: Сергей Шашко
→ Ссылка
Ну как-то так:
opera ='Кристофер Слай: Ну ясно! — Как мне звать ее?\n' \
'Лорд: Мадам.\n' \
'Кристофер Слай: Мадама Элс или мадама Джон?\n' \
'Лорд: Мадам — и все. Так жен зовут вельможи'
rol = {'Кристофер Слай': [], 'Лорд': []}
line_text = opera.splitlines()
for text in line_text:
s_text = text.split(': ')
d = rol[s_text[0]]
d.append(s_text[1])
rol[s_text[0]] = d
for i in rol:
print(f'{i}:')
for x in rol[i]:
print(x)
print()
Peзультат:
Кристофер Слай:
Ну ясно! — Как мне звать ее?
Мадама Элс или мадама Джон?
Лорд:
Мадам.
Мадам — и все. Так жен зовут вельможи