我有一个名称列表,并希望计算整个文本文件集中的出现次数。
我正在使用带有字典的简单正则表达式搜索来做到这一点:
for k,v in eng_names_dict.items():
for i in v:
pattern = re.compile(str(i).strip(' '))
matches = re.search(pattern, text)
if matches:
namesDict[k] += 1
break
return
The catch:
我混合使用标题和名称(如下面的示例所示,具有不同的名称格式),它们之间有些重复。
例如:我的列表包括两个不同的人-“ Mark博士”(标题+姓氏)和“ Mark Smith”(名字+姓氏)。
如果文本文件包含字符串“ Mark Smith博士说...”,我的函数将为两个人都计数(而不是仅针对“ Mark Smith”)。
有没有办法确保每个子串只计数一次?
也许使用包含-排除原理?
text.count("Dr. Mark") + text.count("Mark Smith") - text.count("Dr. Mark Smith")
最后的减号删除重复项