`错误:不平衡括号`同时检查项目是不是存在于熊猫数据框中

Posted

技术标签:

【中文标题】`错误:不平衡括号`同时检查项目是不是存在于熊猫数据框中【英文标题】:`error: unbalanced parenthesis` while checking if an item presents in a pandas dataframe`错误:不平衡括号`同时检查项目是否存在于熊猫数据框中 【发布时间】:2018-07-19 20:58:54 【问题描述】:
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

请帮忙!

【问题讨论】:

这看起来不像是完整的堆栈跟踪。 你想要完整的跟踪吗? 你应该养成发帖的习惯,是的。 【参考方案1】:

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

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

信息:

括号是正则表达式中需要“转义”的特殊字符,例如here 或here。

【讨论】:

可能是更简单的方法。【参考方案2】:

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

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

更笼统的:

import re

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

【讨论】:

实际上我是一个一个地传递一个列表来检查它是否存在,所以我不能像这样硬编码这个转义,我的实际代码是这样的,for item in mylist: if df.B.str.contains(item): print(item) @pyd。这如何阻止您正确转义字符串? 是的,这是不同的。乔解决方案不要逃避,默认情况下所有正则表达式都不会编译(我希望它是好的措辞)。所以如果使用一些正则表达式,我的解决方案可以工作,而乔的解决方案不行。 但是如果不想使用正则表达式,则需要乔解决方案,如果需要正则表达式(例如 | 用于连接字符串)需要我的解决方案。 谢谢@jezrael

以上是关于`错误:不平衡括号`同时检查项目是不是存在于熊猫数据框中的主要内容,如果未能解决你的问题,请参考以下文章

检查字符串是不是在熊猫数据框中

检查字符串是不是“平衡”的递归函数

熊猫:检查是不是存在具有某些值的行

检查表达式 C# 中的平衡括号

检查给定列表中的元素是不是存在于 DataFrame 的数组列中

创建一个函数来检查表中是不是同时存在两个项目