gpt4 book ai didi

python - 如何从Python集合中有效地循环正则表达式搜索

转载 作者:行者123 更新时间:2023-11-30 23:06:45 24 4
gpt4 key购买 nike

我正在评估一长串句子,看看它们是否包含状态名称并用字典映射它们,这是我想出的代码——速度慢得令人痛苦。应该如何正确完成此操作?

       for sent in sentences: #set of sentences.upper()
for state in stateset: #set of state abbrev's and names in .upper()
boundst = re.compile(r'\b%s\b' % state, re.I)
if re.search(boundst, sent):
sentstatedict[sent] = state
break

我不知道如何提前创建绑定(bind)版本 - 我可以创建一组并使用它们吗?

需要明确的是,我想找出对于我的每个句子,最多有一个匹配的州名称或该句子中包含的缩写。我的困难在于不知道如何预先组装状态字符串的可用“绑定(bind)”版本列表以进行“整个单词”匹配。这导致我在内循环中使用了re.compile

最佳答案

您一遍又一遍地编译所有正则表达式(N 次!其中 N 是句子的数量)。 re.compile 不是一个快速的操作,所以这就是造成痛苦的原因。您可以初始化它们的字典,以便可以按状态查找它们:

re_lookup = {
state: re.compile(r'\b%s\b' % state, re.I)
for state in stateset
}

for sent in sentences:
for state in stateset:
if re.search(re_lookup[state], sent):
sentstatedict[sent] = state
break

关于python - 如何从Python集合中有效地循环正则表达式搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32535609/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com