使用 str.contains 时是否有等效的?
以下代码由于“Sa”而错误地将“Said Business School”列在类别中。如果我能创建一个 wordboundary 就可以解决问题。在后面加一个空格会搞砸。我正在使用 pandas,即 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
这与正则表达式中的旧 Python 问题相同,其中
'\b'
应作为 raw-string r'\b...'
传递。或者不太理想的是,将其双重转义为 ('\\b'
)。
所以你的正则表达式应该是:
gprivate_n = (r'\b(Co|Inc|Llc|Group|Ltd|Corp|Plc|Sa |Insurance|Ag|As|Media|&|Corporation)')
单词边界不是字符,因此您无法使用
.contains
找到它。您需要使用正则表达式或将字符串拆分为单词,然后检查您当前在 gprivate_n
中定义的集合中每个单词的成员资格。