我正在努力找到一种方法,按部分分割我手头的法律文件。我一直在尝试用正则表达式来实现这一点,虽然我已经相当接近了,但我想看看是否有办法进一步优化输出,以整合正则表达式脚本产生的匹配数量。
每个文档都有多个节标题,但都遵循相同的基本结构。首先,有一个“论证”标题,总结了每个小节中提出的观点。我想包括这个论证部分,因为语料库中的一些文档没有后续的小节;然而,他们中的绝大多数确实有这些部分。每个小节都以罗马数字开头,每个文档中的小节数量可能会有所不同。虽然我不知道每个文档中有多少小节,但我假设不超过10个。
对于模态文档,结构看起来像:
string = """ARGUMENT
Summary of argument
I. TITLE OF SUBSECTION 1
Text of subsection 1
II. TITLE OF SUBSECTION 2
Text of subsection 2
CONCLUSION
Text of conclusion
"""
我创建了一个正则表达式脚本,尝试使用以下命令按标题拆分每个部分
re.split
,指定ARGUMENT标题、罗马数字第1(I)至10(X)小节和结论部分,添加新行符号以避免在这些单词/符号的每个实例上拆分,无论它们是否恰好出现在标题本身中:
r'(\nARGUMENT|\nI\.|\nII\.|\nIII\.|\nIV\.|\nV\.|\nVI\.|\nVII\.|\nVIII\.|\nIX\.|\nX\.|\nCONCLUSION.*)'
我想要的输出是一个列表,其中每个标题和下面的结果文本都组合成一个元素,如下所示:
['ARGUMENT Summary of argument', 'I. TITLE OF SUBSECTION 1 Text of subsection 1', 'II. TITLE OF SUBSECTION 2 Text of subsection 2', 'CONCLUSION Text of conclusion']
然而,当使用
re.split
在上述字符串中,我的实际输出将罗马数字与该部分的其余文本分开(注意下面列表的第二和第四个元素:
['ARGUMENT\nSummary of argument\n', '\nI.', ' TITLE OF SUBSECTION 1\nText of subsection 1\n', '\nII.', ' TITLE OF SUBSECTION 2\nText of subsection 2\n', '\nCONCLUSION', '\nText of conclusion\n']
输出中的换行符对我来说并不是特别重要。相反,对我来说最重要的是合并标题和标题下的文本。
我可以对正则表达式脚本进行一些编辑,以获得第一个输出,而不是第二个输出吗?或者,如果没有,我是否可以使用其他正则表达式命令来获得特定的输出?而且,不那么关键的是,是否有一种更有效或更精简的方法将章节标题与脚本中的罗马数字I到X相匹配?
提前感谢您提供的任何帮助!