#python #text #nlp
#python #текст #nlp
Вопрос:
У меня есть текстовый файл ;
… Выше, в таблице 5, мы поняли взаимосвязь между давлением и объемом. В нем говорилось … и теперь мы знаем … . Таблица 9: представляет график x и y . Таблица 6 была посвящена силе и ее влиянию на объекты….
Теперь я написал код для извлечения строк, в которых есть слово table;
with open file( <pathname filename.txt>, 'r ') as f:
k = f.readlines()
for line in k:
if ' Table ' in line:
print(line)
Теперь я хочу распечатать выходные данные в определенном формате;
(имя текстового файла), (идентификатор таблицы), (содержимое таблицы)
Я делаю это с помощью .split метода python;
x = 'Paper ID:' filename.split('.')[0] '|' 'Table ID:' line.split(':')[0] '|' 'Table Content:' line.split(':')[1] '|'
Теперь, как вы можете видеть, я могу разделить идентификатор таблицы и содержимое таблицы, где есть разделитель ( :), через некоторое время .
Как мне сделать то же самое там, где нет разделителя, т. Е. для этих строк;
Выше, в таблице 5, мы поняли взаимосвязь между давлением и объемом. В нем говорилось … и теперь мы знаем .. Или в таблице 7, которую мы видели….
?
Кто-нибудь может, пожалуйста, помочь?
Комментарии:
1. Я думаю, вам следует взглянуть на регулярные выражения (short regex). Могло бы сработать следующее:
TableW[0-9](.*)TableW[0-9]
где группа 1 — это содержимое вашей таблицы. Ресурсы: regex101.com или regexr.com для тестирования en.wikipedia.org/wiki/Regular_expression python_specific: tutorialspoint.com/python/python_reg_expressions.htm
Ответ №1:
Вы могли бы выполнить поиск шаблона Table <number>
, а затем разделить в этом месте.
Вы могли бы использовать re.split(pattern, string, maxsplit=0, flags=0)
или re.findall(pattern, string, flags=0)
re.split('Table [0-9]', line)[-1]
даст вам то, что следует (содержимое).
re.findall('Table [0-9]', line)
предоставит вам таблицу с ее идентификатором, из которой вы можете ее извлечь.
Документация Python по re.split и re.findall