对于我的硕士论文,我需要从公司收入电话记录中提取(演讲者、文本)元组。
成绩单采用以下形式:
OPERATOR: Some text with numbers, special characters and linebreaks.
NAME, COMPANY, POSITION: Some text with numbers, special characters and linebreaks.
NAME: Some text with numbers, special characters and linebreaks.
我想从文档中提取所有(扬声器、文本)元组。例如:
[("OPERATOR", "Some text with numbers, special characters and linebreaks."), ..]
到目前为止,我已经用re.findallPython 中的函数尝试了不同的正则表达式。
这是我的代码:
import re
# First approach:
r = re.compile(r"^([^a-z:]+?):([\s\S]+?)", flags=re.MULTILINE)
re.findall(r, example)
# Second approach:
r = re.compile(r"^([^a-z:]+?):([\s\S]+)", flags=re.MULTILINE)
re.findall(r, example)
第一种(非贪婪)方法的问题在于它没有捕获说话者的全文。
第二种(贪婪)方法的问题在于,它不会在下一个说话者出现时停止。
编辑:附加信息
文本组也可以包含双点。在某些情况下,在一行的第一个单词之后立即出现双点,例如“For\nexample: ...”
演讲者组也可以覆盖多行,例如当公司名称和职位描述很长时
隔江千里
相关分类