У меня есть строка:
bdv. mot. g. vns. kilm.
И зная список строк вроде
important_strings_lst=['bdv.', 'dktv.', 'mot. g.', 'vyr. g.']
Я хочу получить выбор regex
, например:
bdv. mot. g.
Я присоединился к списку и попробовал: идея отсюда
regex = re.compile(r'\b(?!bdv.|dktv.|mot. g.|vyr. g.)\w+', re.UNICODE)
regex.sub("", 'bdv. mot. g. vns. kilm.')
Есть
'bdv. mot. . . .'
Поменять местами в регулярном выражении с \s
тоже не получилось. Как это сделать?
Я мог бы использовать что-то вроде [x for x in important_strings_lst if x in my_string]
, но мне нужна хорошая производительность, так как это будет использоваться с миллионами строк фрейма данных pandas с ул. заменить
🤔 А знаете ли вы, что...
В Python есть инструменты для создания графиков и визуализации данных, такие как библиотеки Matplotlib и Seaborn.
Символ .
имеет особое значение в регулярных выражениях. Вы можете использовать re.escape
, чтобы сделать строку «безопасной» для использования в регулярном выражении.
>>> import re
... important_strings=['bdv.', 'dktv.', 'mot. g.', 'vyr. g.']
... regex = re.compile('|'.join(re.escape(s) for s in important_strings))
... regex.findall('bdv. mot. g. vns. kilm.')
['bdv.', 'mot. g.']
У Pandas есть собственный findall
, который должен работать как re.findall