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

pyd*_*pyd 5 python regex data-analysis dataframe pandas

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

当我做,

df.B.str.contains("six").any()
out[2]=True
Run Code Online (Sandbox Code Playgroud)

当我做,

df.B.str.contains("six)").any()
Run Code Online (Sandbox Code Playgroud)

我收到以下错误,

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
Run Code Online (Sandbox Code Playgroud)

请帮忙!

jez*_*ael 8

你需要逃避)\,因为特殊字符的正则表达式:

df.B.str.contains("six\)").any()
Run Code Online (Sandbox Code Playgroud)

更一般:

import re

df.B.str.contains(re.escape("six)")).any()
Run Code Online (Sandbox Code Playgroud)


Joe*_*Joe 8

您可以设定regex=Falsein pandas.Series.str.contains:

df.B.str.contains("six)", regex=False).any()
Run Code Online (Sandbox Code Playgroud)

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

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

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

信息:

括号是正则表达式中需要"转义"的特殊字符,例如,请参见此处此处.