我有一个长字符串,实际上是一组概念。我想挖掘字符串并创建一个概念列表。
字符串以:
开头 Abduction and retroduction Action research: a case study Analysis of variance (ANOVA) Attitudes Autobiography see Biographical method...
该列表包含字典条目。在绝大多数情况下,大写字母标志着新进入的开始。我想列出条目。
我试过了re.findall(r"([A-Z].+?)\s[A-Z]")
。但它过滤掉了每一秒的条目。而不是[“绑架和重新引入”,“行动研究:案例研究”,“方差分析(ANOVA)”],我得到:[“绑架和重新引入”,“方差分析(ANOVA)”]
答案 0 :(得分:1)
默认情况下,您可以有重叠的结果,这就是为什么跳过所有第二个连续条目的原因(因为您匹配了他的第一个字母)。避免此问题的一种方法是使用前瞻断言(?=..)
来匹配第一个字母,这意味着“后跟”(前瞻只是一个检查并且不匹配):
re.findall(r"(\b[A-Z].+?)(?=\s[A-Z]|\s*$)")