当分隔符采用不同格式时使用 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 7
和 Item 7A
可能会以许多不同的格式出现,例如,由于文本文件的初始预处理。
Item 7.
text
Item 7A.
或
ITEM 7
text
ITEM 7A.
或
ITEM 7
text
ITEM 7A:
或
Item
7
text
Item
7A.
Item 7
和 Item 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 个文本文件。我的问题如下。
- 是否有一个 "catch all" 代码可以搜索所有出现的定界符,即使部分字符串位于不同的行中?
- 是否可以将每个单独的文本块写入硬盘驱动器上的单独文本文件中?
- 是否可以编写一个日志文件来显示哪些文本文件未被处理,因为算法 "missed" 由于格式问题导致的分隔符?
如有任何帮助,我们将不胜感激。
而不是静态 space,在 item
和 7
[= 之间使用 \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()
我是一名新 Python 程序员(在 R 方面有更多经验)使用 Pycharm 社区版 v2019 2.4,使用笔记本电脑 运行 Windows 10。我'我试图提取两个分隔符之间的文本块,通常采用以下格式。 (文本位于分隔符之间,但在不同的行上)
Item 7.
text, text, text, text
text, text, text, text
Item 7A.
我遇到的问题是 Item 7
和 Item 7A
可能会以许多不同的格式出现,例如,由于文本文件的初始预处理。
Item 7.
text
Item 7A.
或
ITEM 7
text
ITEM 7A.
或
ITEM 7
text
ITEM 7A:
或
Item
7
text
Item
7A.
Item 7
和 Item 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 个文本文件。我的问题如下。
- 是否有一个 "catch all" 代码可以搜索所有出现的定界符,即使部分字符串位于不同的行中?
- 是否可以将每个单独的文本块写入硬盘驱动器上的单独文本文件中?
- 是否可以编写一个日志文件来显示哪些文本文件未被处理,因为算法 "missed" 由于格式问题导致的分隔符?
如有任何帮助,我们将不胜感激。
而不是静态 space,在 item
和 7
[= 之间使用 \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()