Python 如何在pandas str.contains中使用\b单词边界?
当使用str.contains时,是否有等效项 由于“Sa”,下面的代码错误地将“Said Business School”列在类别中。如果我可以创建一个词边界,它将解决问题。在后面加一个空格会把事情搞砸。我用的是熊猫,它们是dfs。我知道我可以使用正则表达式,但只是好奇我是否可以使用字符串来加快它Python 如何在pandas str.contains中使用\b单词边界?,python,regex,string,pandas,word-boundary,Python,Regex,String,Pandas,Word Boundary,当使用str.contains时,是否有等效项 由于“Sa”,下面的代码错误地将“Said Business School”列在类别中。如果我可以创建一个词边界,它将解决问题。在后面加一个空格会把事情搞砸。我用的是熊猫,它们是dfs。我知道我可以使用正则表达式,但只是好奇我是否可以使用字符串来加快它 gprivate_n = ('Co|Inc|Llc|Group|Ltd|Corp|Plc|Sa |Insurance|Ag|As|Media|&|Corporation') df.loc[d
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
单词边界不是字符,因此您无法使用
.contains
找到它。您需要使用正则表达式或将字符串拆分为单词,然后检查当前在gprivate\n
中定义的集合中每个单词的成员资格。这与正则表达式中的旧Python问题相同,其中'\b'
应作为r'\b..传递。或者更不希望出现双转义('\\b'
)
所以你的正则表达式应该是:
gprivate_n = (r'\b(Co|Inc|Llc|Group|Ltd|Corp|Plc|Sa |Insurance|Ag|As|Media|&|Corporation)')
对不起,我在用熊猫!只需使用正则表达式单词边界…@poke:需要使用r'\b..
(rawstring)。正则表达式也出现了同样的老问题。当使用\\b
而不是\b
和/或原始字符串时,可以使用str.contains
捕获单词边界。请参阅和。@PawelKranzberg:这实际上是关于转义或原始字符串的老问题,所以使用r\b..
这实际上是不正确的:\b
可以与str一起使用。contains
,您只需要原始字符串:r'\b..