`error:unbalanced括号`,同时检查项目是否存在于pandas数据帧中

时间:2018-02-09 06:24:48

标签: python regex pandas dataframe data-analysis

df=pd.DataFrame({"A":["one","two","three"],"B":["fopur","give","six"]})

当我这样做时,

df.B.str.contains("six").any()
out[2]=True

当我这样做时,

df.B.str.contains("six)").any()

我收到以下错误,

C:\ProgramData\Anaconda3\lib\sre_parse.py in parse(str, flags, pattern)
    868     if source.next is not None:
    869         assert source.next == ")"
--> 870         raise source.error("unbalanced parenthesis")
    871 
    872     if flags & SRE_FLAG_DEBUG:

error: unbalanced parenthesis at position 3

请帮忙!

2 个答案:

答案 0 :(得分:8)

您可以在regex=False中设置in pandas.Series.str.contains

df.B.str.contains("six)", regex=False).any()

如果你想匹配,无论情况如何,

df.B.str.contains("Six)", case=False, regex=False).any() 
out[]: True

https://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.str.contains.html

的信息:

括号是正则表达式中需要“转义”的特殊字符,例如参见herehere

答案 1 :(得分:7)

您需要)转义\,因为特殊的正则表达式字符:

df.B.str.contains("six\)").any()

更一般:

import re

df.B.str.contains(re.escape("six)")).any()