Python 如何返回包含括号的字符串匹配?

Python 如何返回包含括号的字符串匹配?,python,pandas,Python,Pandas,我的部分代码通过将字符串名称与另一列名称中的元素相匹配,从列中提取元素: rank=df.loc[df['Names'].str.contains(name),'Ranks'].iloc[0] 除了少数情况下name包含括号外,代码正常工作 例如,它将导致name=Banana(1998)出错 我知道str.contains可能不是这里最好的方法,但我环顾四周,似乎没有发现任何其他帖子询问同样的问题,所以我可以从那里开始工作 df的样本可通过以下方式复制: data=[['Apple',10],

我的部分代码通过将字符串
名称
与另一列
名称
中的元素相匹配,从列
中提取元素:

rank=df.loc[df['Names'].str.contains(name),'Ranks'].iloc[0]

除了少数情况下
name
包含括号外,代码正常工作

例如,它将导致
name=Banana(1998)
出错

我知道str.contains可能不是这里最好的方法,但我环顾四周,似乎没有发现任何其他帖子询问同样的问题,所以我可以从那里开始工作

df的样本可通过以下方式复制:

data=[['Apple',10],'Banana(1998)'15],'Banana(2000)'14]]

df=pd.DataFrame(data,columns=['Names','Ranks'])
如果使用
str.contains
,则需要在
name
中转义
”(“
”)
,因为它们在regex中是特殊字符,如下所示

name = 'Banana \(1998\)'
df['Names'].str.contains(name)

Out[655]:
0    False
1     True
2    False
Name: Names, dtype: bool

df.loc[df['Names'].str.contains(name), 'Ranks']

Out[659]:
1    15
Name: Ranks, dtype: int64
有争论。不更改基本字符串的解决方案:

df.loc[df['Names'].str.contains(name, regex=False), 'Ranks']

错误是什么?同时,请尝试
str.contains(name,regex=False)
您可能有空格,因此应该链接str.strip
df.loc[df['Names'].str.strip.str.contains(name)
列表或变量的名称是什么?@DanielMesejo第一个错误是
sre_常量。错误:缺失),未终止的子模式位于位置8
。我尝试了
str.contains(name,regex=False)
并且它给了我一个
索引器
如果
name
不在
df['Names']
?@datanoveler name是一个变量。对于不同的
name
,例如
name=“Banana(1998)”
name=“Banana(2000)”
,我需要为
rank
设置不同的值。