НЛП: Как найти строку, в которой есть скобки? - PullRequest
2 голосов
/ 07 мая 2020

Я пытаюсь отфильтровать фрейм данных, если col1 содержит любую подстроку из списка. Проблема в том, что одна подстрока содержит скобки, вызывающие ошибку (на иллюстрации выделены жирным шрифтом). Любое решение? Спасибо!

index   fruit_name
0       "apple"
1       "pear"
2       "passionfruit (Passiflora)"
4       "grape"

substring_list = ['apple',**'(passiflora)'**]
df[df.fruit_name.str.contains('|'.join(substring_list))]

1 Ответ

2 голосов
/ 07 мая 2020

Скобки, такие как (), являются специальными символами в регулярном выражении, поэтому вам нужно использовать backsla sh \ перед ними, например:

df = pd.DataFrame({'fruit_name': ["apple","pear","passionfruit (Passiflora)", "grape"]})

substring_list = ['apple','\(passiflora\)']
print (df[df.fruit_name.str.contains('|'.join(substring_list), case=False)]) 
                  fruit_name
0                      apple
2  passionfruit (Passiflora)
...