Я оцениваю длинный список предложений, чтобы увидеть, включают ли они имена состояний и сопоставляют их с dict, и это код, который я придумал - это очень медленно. Как это должно быть сделано правильно?Как эффективно выполнять поиск регулярных выражений из набора python
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
Я не знаю, как создать связанные версии загодя - могу ли я создать их набор и использовать?
Чтобы было ясно, я хотел узнать, для каждого предложения, которое у меня было, не более одного совпадающего имени или аббревиатуры, содержащихся в этом предложении. Моя трудность заключалась в том, что я не знал, как предварительно собрать список используемых «привязанных» версий строк состояния для соответствия «всего слова». Это привело меня к тому, что во внутреннем цикле было re.compile
.
. 'Re.compile' кэширует шаблоны, которые вы передаете ему (вы называете это явно или полагаетесь на неявную компиляцию одной из функций поиска верхнего уровня, таких как' re.search', с шаблоном строки). – Blckknght
По какой-то причине (назовите мою непитонику) словари словарей здесь имеют для меня больше смысла, чем циклы в циклах в функциях. – Xodarap777
Это оставляет правильный перерыв. В штате всего 100 элементов, поэтому исходный цикл не повредит. – Xodarap777