Python 正则表达式:如何在文本文件中找到重复出现的文本块
Python Regex: How Can I find Recurring Blocks of Texts in a Text File
我正在尝试使用 Python 解析全部以“----BEGIN---”开头并以“---END”结尾的重复文本块。所以文本文件将如下所示。基本上,我希望能够找到每个块(单词、数字和特殊字符)并解析它们以供进一步分析。下面的代码和我得到的一样接近,但它 returns 整个文档,而不是每个块。任何帮助将不胜感激。
block_search = re.compile('----BEGIN---.*---END',re.DOTALL)
with open(file,'r',encoding='utf-8') as f:
text = f.read()
result = re.findall(block_search,text)
----开始---
单词特殊字符数字单词特殊字符单词数字单词单词。
单词数字单词特殊字符单词数字单词单词
单词 数字 单词 单词
---结束
----开始---
单词单词数字单词特殊字符单词数字单词单词。
单词数字单词特殊字符单词数字单词单词
单词数字单词单词...
---结束
'----BEGIN---.*---END'
将匹配从第一次出现的 ----BEGIN---
到最后一次出现的 ---END
之间的任何内容,这就是 .*
所做的。
如果要查找特定的块,使用.*?
,它会在它后面的子串第一次出现后停止,或者说,它只会搜索到它后面的子串。
block_search = re.compile('----BEGIN---.*?---END',re.DOTALL)
我正在尝试使用 Python 解析全部以“----BEGIN---”开头并以“---END”结尾的重复文本块。所以文本文件将如下所示。基本上,我希望能够找到每个块(单词、数字和特殊字符)并解析它们以供进一步分析。下面的代码和我得到的一样接近,但它 returns 整个文档,而不是每个块。任何帮助将不胜感激。
block_search = re.compile('----BEGIN---.*---END',re.DOTALL)
with open(file,'r',encoding='utf-8') as f:
text = f.read()
result = re.findall(block_search,text)
----开始--- 单词特殊字符数字单词特殊字符单词数字单词单词。 单词数字单词特殊字符单词数字单词单词 单词 数字 单词 单词 ---结束
----开始--- 单词单词数字单词特殊字符单词数字单词单词。 单词数字单词特殊字符单词数字单词单词 单词数字单词单词... ---结束
'----BEGIN---.*---END'
将匹配从第一次出现的 ----BEGIN---
到最后一次出现的 ---END
之间的任何内容,这就是 .*
所做的。
如果要查找特定的块,使用.*?
,它会在它后面的子串第一次出现后停止,或者说,它只会搜索到它后面的子串。
block_search = re.compile('----BEGIN---.*?---END',re.DOTALL)