Python正则表达式剥离带条件的标点符号

时间:2016-07-25 19:23:28

标签: python regex

我有一个包含各种公司名称的数据框,我需要能够对它们执行groupby功能。然而,公司名称通常是律师事务所,可以通过各种不同的方式呈现(即#34; Akin Gump"," Akin,Gump"," Akin, Gump"," Akin Gump Strauss Hauer& Feld LLP"," Akin Gump Strauss Hauer Feld",你明白了。

我目前的代码在大多数情况下效果很好,除非原始文本中的间距错误 - 例如" Akin,Gump" (成为" AkinGump")或" Akin Gump Strauss Hauer& Feld LLP"成为" Akin Gump Strauss Hauer Feld" (Hauer和Feld之间的两个空间)。

table = string.maketrans("", "")
company_name = company_name.translate(table, string.punctuation)
stopwords = ['LLC', 'INC', 'PLLC', 'LP', 'LTD', 'PLC', 'LLP']
company_name = ' '.join(filter(lambda x: x not in stopwords, company_name.split()))

我认为有一个正则表达式解决方案,但我根本不擅长。

1 个答案:

答案 0 :(得分:0)

我使用正则表达式进行第一次直通来纠正有问题的字符,这样他们就不会在代码的其余部分引起问题:

import re

re.sub(" *[&,] *"," ", company_name) #Add any other special characters you might want

这将只用一个空格替换任何特殊字符及其周围的所有空格,这意味着它将成功完成其余代码而不会出现问题。