Проблема с .spliting линии в моде, когда нет разделителя - PullRequest
1 голос
/ 06 марта 2019

У меня есть текстовый файл;

... Выше в Таблице 5 мы поняли связь между давлением и объемом.Он сказал ... и теперь мы знаем ...Таблица 9: представляет график х и у.Таблица 6 была посвящена силе и ее последствиям для объектов ....

Теперь я написал код для извлечения строк, в которых есть таблица слов;

with open file( <pathname + filename.txt>, 'r+') as f:
   k = f.readlines()
   for line in k:
     if ' Table ' in line:
         print(line)

Теперь я хочу напечатать вывод в определенном формате;

(имя файла txt), (идентификатор таблицы), (содержимое таблицы)

Я делаю это с помощьюиспользуя метод Python .split;

x = 'Paper ID:' + filename.split('.')[0] + '|' + 'Table ID:' + line.split(':')[0] + '|' + 'Table Content:' + line.split(':')[1] + '|' 

Теперь, как вы можете видеть, я могу разделить идентификатор таблицы и содержимое таблицы там, где после них есть разделитель (:). Как мне сделать то же самое, когда нет разделителя, т.е. для этих линий;

Выше в Таблице 5 мы поняли связь между давлением и объемом.Он сказал ... и теперь мы знаем .. Или В таблице 7 мы видели ....

?

Может ли кто-нибудь помочь?

1 Ответ

1 голос
/ 06 марта 2019

Вы можете найти шаблон 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...