str.contains中等价的\ b字边界?

时间:2014-03-12 17:57:07

标签: python string pandas

使用str.contains时是否存在等价物?

以下代码因“Sa”而错误地在该类别中列出“赛义德商学院”。如果我可以创建一个wordboundary,它将解决问题。把它弄乱之后放一个空格。我正在使用熊猫,这是dfs。我知道我可以使用正则表达式,但只是好奇我是否可以使用字符串来加快速度

gprivate_n = ('Co|Inc|Llc|Group|Ltd|Corp|Plc|Sa |Insurance|Ag|As|Media|&|Corporation')
df.loc[df[df.Name.str.contains('{0}'.format(gprivate_n))].index, "Private"] = 1 

2 个答案:

答案 0 :(得分:2)

这与正则表达式中的旧Python问题相同,其中'\b'应该以raw-string r'\b...'的形式传递。或者更不希望出现两次转义('\\b')。

因此您的正则表达式应为:

gprivate_n = (r'\b(Co|Inc|Llc|Group|Ltd|Corp|Plc|Sa |Insurance|Ag|As|Media|&|Corporation)')

答案 1 :(得分:1)

单词边界不是字符,因此您无法使用.contains找到它。您需要使用正则表达式或将字符串拆分为单词,然后检查当前在gprivate_n中定义的集合中每个单词的成员身份。