我有一份公司名单,上面有他们的名字+商业首字母缩略词,例如:
['Abc Inc','def Gmbh','ghi PLC', 'xhlm SA', 'sojs LLC'] and so on.
我想得到一份没有PLC,INC,Gmbh和所有类似首字母缩略词的清晰清单。出于这个原因,我添加了一个For循环,该循环遍历了一个首字母缩略词列表,以将它们从公司名称中删除并替换为“”
这就是我带来的,但是极大地增加了处理代码所需的时间。还有更好的主意吗
def ExtractNames():
substring_adjustment = ['AB', 'AB', 'B.V', 'B.v', 'BV', 'BV', 'GMBH', 'Gmbh', 'INC', 'INC.', 'Inc', 'Inc.', 'LTD', 'Ltd', 'NV', 'NV', 'P.L.C', 'P.L.C', 'PLC', 'Plc', 'SA', 'SE', 'SE', 'SPA', 'Sa', 'Spa', 'ab', 'b.v', 'bv', 'gmbh', 'inc', 'inc.', 'ltd', 'nv', 'p.l.c', 'plc', 'sa', 'se', 'spa',",",".","-"]
Company_List= load_workbook(filename='Excel for Scraping.xlsx',data_only=True).active
for row in Company_List.iter_rows (min_row=2,min_col=1,max_col=1,values_only=True):
value = row[0]
for word in substr_adjust:
value = value.replace(word,"")
print(value)
您可以创建一组子字符串,并在公司名称中的单词上循环,测试它们是否列出,然后将它们连接在一起,而不是在值中可能存在的所有子字符串上循环(然后使用
replace
,这有潜在的其他问题,例如,如果公司名称中的单词包含“ab”作为子字符串)(使用空格分隔符)那些不是。集合包含测试是O(1)倍,所以它不应该这么慢给出:
还请注意
substring_adjustment
的表达式实际上有一些重复项(例如'AB'
,'BV'
),但这些项将在创建集合时自动处理使用正则表达式,您可能可以更快地完成此操作:
您可以加入替换并使用正则表达式:
正如您所看到的,这种方法的问题在于,您需要首先进行较长的替换。此外,替换列表中还有重复项。
也就是说,您可以将替换列表和正则表达式更改为:
对于您的示例,这将产生:
相关问题 更多 >
编程相关推荐