当分隔符采用不同格式时使用 Python 在两个分隔符之间提取文本

Extracting text between two delimiters when the delimiters are in different formats using Python

我是一名新 Python 程序员(在 R 方面有更多经验)使用 Pycharm 社区版 v2019 2.4,使用笔记本电脑 运行 Windows 10。我'我试图提取两个分隔符之间的文本块,通常采用以下格式。 (文本位于分隔符之间,但在不同的行上)

Item 7.
text, text, text, text
text, text, text, text
Item 7A.

我遇到的问题是 Item 7Item 7A 可能会以许多不同的格式出现,例如,由于文本文件的初始预处理。

Item 7.  
text 
Item 7A.

ITEM 7  
text
ITEM 7A.

ITEM 7 
text  
ITEM 7A:

Item 
7
text
Item 
7A.

Item 7Item 7A 也可以出现在较大的文本块中。这是我无法控制的问题。

到目前为止,我已经检查了 100 个文本文件并编写了以下代码。

import glob
import os
from os.path import isfile

path = filepath` 
for filename in glob.glob(os.path.join(path, '*.txt')):
     with open(filename) as f:
     data = f.read()

     x = re.findall(r'Item 7(.*?)Item 7A',data, re.DOTALL)
     "".join(x).replace('\n',' ')
     print(x)

     file = open('C:/R_Practice/dale1.txt', 'w')
     file.write(str(x))

     file.close()  

这处理了一些但不是所有的情况,即便如此它也没有检测到所有情况。不可能分析整套文本文件,因为完整研究将有近 250,000 个文本文件。我的问题如下。

  1. 是否有一个 "catch all" 代码可以搜索所有出现的定界符,即使部分字符串位于不同的行中?
  2. 是否可以将每个单独的文本块写入硬盘驱动器上的单独文本文件中?
  3. 是否可以编写一个日志文件来显示哪些文本文件未被处理,因为算法 "missed" 由于格式问题导致的分隔符?

如有任何帮助,我们将不胜感激。

而不是静态 space,在 item7[= 之间使用 \s(这意味着任何类型的 space,包括换行符) 14=]

import glob
import os
from os.path import isfile

path = filepath
for filename in glob.glob(os.path.join(path, '*.txt')):
   with open(filename) as f:
     data = f.read()

     x = re.findall(r'Item\s+7(.*?)Item\s+7A',data, re.DOTALL | re.IGNORECASE)
     #            here ___^^^   and ___^^^
     "".join(x).replace('\n',' ')
     print(x)

     file = open('C:/R_Practice/dale1.txt', 'w')
     file.write(str(x))

     file.close()