Проблема с разделением строки таким образом, когда нет разделителя

#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