使用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
答案 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
中定义的集合中每个单词的成员身份。