如果此问题已经存在,请指点我。
如何有效地将字边界语法添加到字符串列表中?
例如,我想确保badpositions
中的以下字词仅与整个字词匹配,因此我想使用re.search('\bword\b', text)
。
如何将不良位置的单词设为['\bPresident\b', '\bProvost\b']
等
text = ['said Duke University President Richard H. Brodhead. "Our faculty look forward']
badpositions = ['President', 'Provost', 'University President', 'Senior Vice President']
答案 0 :(得分:6)
re_badpositions = [r"\b{word}\b".format(word=word) for word in badpositions]
indexes = {badpositions[i]:re.search(re_badpositions[i],text) for i in range(len(badpositions))}
如果我理解正确,您希望在\bWORD\b
字符串中找到与所有单词完全匹配的起始索引(即text
)。我就是这样做的,但我肯定会在这里增加一步,你可以轻松做到:
indexes = {word: re.search("\b{word}\b".format(word=word),text) for word in badpositions}
我发现创建一个要搜索的正则表达式列表更加清晰,然后单独搜索它们,而不是同时将这些正则表达式插入到位。尽管如此,这完全取决于个人偏好。