Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在pandas str.contains中使用\b单词边界?_Python_Regex_String_Pandas_Word Boundary - Fatal编程技术网

Python 如何在pandas str.contains中使用\b单词边界?

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

当使用str.contains时,是否有等效项

由于“Sa”,下面的代码错误地将“Said Business School”列在类别中。如果我可以创建一个词边界,它将解决问题。在后面加一个空格会把事情搞砸。我用的是熊猫,它们是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 

单词边界不是字符,因此您无法使用
.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..