У меня есть текстовый файл в форматеPython: Добавление дополнительных строк в список, созданные с StartsWith()
AN text
text
TI text
AU text
text
text
CS text
SO text
AN text
TI text
AU text
text
CS text
text
SO text
и т.д., где есть ключевые слова двух прописных букв, а затем дополнительный текст на один или несколько дополнительных линий.
Количество строк после ключевого слова может меняться, поэтому я не могу просто получить следующий один или два, но порядок ключевых слов остается тем же.
Что я хочу сделать, так это получить весь текст из списка этих ключевых слов (например, только AN
, AU
и SO
). Я начал с помощью readlines()
для разбора файла, а затем:
sorted_text = []
for line in file:
if line.startswith('AN'):
line = line.rstrip('\n')
sorted_text.append(line)
После того, что все идет не так! Я стремился затем добавить следующую строку в список к этой, если она не началась с TI
, но любые петли elif/else, кажется, пытаются добавить слишком много дополнительных строк.
Является ли это даже разумным способом решения этой проблемы или есть лучший подход для начала?
Ваше решение может быть легко изменено для обеспечения пространства в текстах - добавьте параметр 'maxsplit = 1'' в' 'line.split (" ") ''. И, возможно, 'lstrip()' следует вызывать на 'line' перед его расщеплением. И 'd' может быть обычным dict,' defaultdict() 'не нужно :) – Abgan