Поиск советов о том, как создавать объекты из нескольких текстовых файлов для создания словаря.
Этот текстовый файл: https://pastebin.com/Npcp3HCM
Был преобразован вручную в эту требуемую структуру данных: https://drive.google.com/file/d/0B2AJ7rliSQubV0J2Z0d0eXF3bW8/view
Существуют тысячи таких текстовых файлов, и они могут иметь разные заголовки разделов, как показано в этих примерах:
Я начал с чтения файлов
from glob import glob
txtPth = '../tr-txt/*.txt'
txtFiles = glob(txtPth)
with open(txtFiles[0],'r') as tf:
allLines = [line.rstrip() for line in tf]
sectionHeading = ['Corporate Participants',
'Conference Call Participiants',
'Presentation',
'Questions and Answers']
for lineNum, line in enumerate(allLines):
if line in sectionHeading:
print(lineNum,allLines[lineNum])
Моя идея состояла в том, чтобы искать номера строк, в которых существовали заголовки разделов, и пытаться извлечь содержимое между этими номерами строк, а затем выделять разделители как тире. Это не сработало, и я застрял в попытке создать такой словарь, чтобы впоследствии я мог запускать различные алгоритмы обработки естественного языка на добытых элементах.
{file-name1:{
{date-time:[string]},
{corporate-name:[string]},
{corporate-participants:[name1,name2,name3]},
{call-participants:[name4,name5]},
{section-headings:{
{heading1:[
{name1:[speechOrderNum, text-content]},
{name2:[speechOrderNum, text-content]},
{name3:[speechOrderNum, text-content]}],
{heading2:[
{name1:[speechOrderNum, text-content]},
{name2:[speechOrderNum, text-content]},
{name3:[speechOrderNum, text-content]},
{name2:[speechOrderNum, text-content]},
{name1:[speechOrderNum, text-content]},
{name4:[speechOrderNum, text-content]}],
{heading3:[text-content]},
{heading4:[text-content]}
}
}
}
Проблема состоит в том, что разные файлы могут иметь разные заголовки и количество заголовков. Но всегда будет раздел под названием "Презентация" и, скорее всего, будет иметь раздел "Вопрос и ответ" . Заголовки этих разделов всегда разделяются строкой равных знакам. А содержание разных динамиков всегда разделяется строкой тире. "Речевой порядок" для раздела Q & A обозначается цифрой в квадратных скобках. Участники всегда указываются в начале документа со звездочками перед их именем, и их плитка всегда находится на следующей строке.
Приветствуется любое предложение о том, как разбирать текстовые файлы. Идеальной помощью было бы дать рекомендации о том, как создать такой словарь (или другую подходящую структуру данных) для каждого файла, который затем может быть записан в базу данных.
Спасибо
- EDIT -
Один из файлов выглядит следующим образом: https://pastebin.com/MSvmHb2e
В котором раздел "Вопрос и ответ" помечен как "Презентация", и нет другого раздела "Вопрос и ответ" .
И окончательный текст примера: https://pastebin.com/jr9WfpV8