Чтение текстового файла inn python и создание из него двух списков - PullRequest
0 голосов
/ 30 января 2020

У меня есть текстовый файл, в котором есть разговоры:

person 1: "quotes"
person 2:"quotes2"
.
.
.
person 1:"quotes 3"
person 2:"quotes 4"

Я хочу прочитать все цитаты человека один, поместить его в список и снова сохранить как текстовый файл. И еще один другой список, чтобы сохранить цитаты человека 2 и в другом другом файле. Как я могу сделать это, используя python, учитывая, что каждая кавычка может состоять из одной строки или более?

1 Ответ

1 голос
/ 30 января 2020

Вы можете создать словарь, в котором ключом является имя автора, а значением - список их цитат. Я бы использовал defaultdict, чтобы сделать вещи проще. Преимущество использования словаря в том, что вы можете иметь неизвестное количество авторов.

from collections import defaultdict

filename = "your_path.txt"

# This is a dictionary of lists
quotes = defaultdict(list)

with open(filename) as f:
    lines = f.readlines()
    index = 0
    while index < len(lines):
        try:
            author, quote = lines[index].strip().split(':')
            # If it doesn't end in quote, keep reading until it does
            while not quote[-1] == '"':
                index += 1
                quote += "\n" + lines[index].strip()
            quotes[author].append(quote.strip('"'))
        except ValueError:
            pass
        index += 1

for key, value in quotes.items():
    print(f"{key}: {value}")

Вывод будет выглядеть примерно так:

person 1: ['quotes', 'quotes 3']
person 2: ['quotes2', 'quotes 4']

Вы можете изменить запись в файл вместо консоль.

...