【发布时间】:2020-12-22 01:39:17
【问题描述】:
我有一个公司列表,上面有他们的名字+业务缩写,例如:
['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)
【问题讨论】:
-
@erip:这只适用于用其他东西替换单个字符; OP 有要替换的多字符串。
-
你可以使用某种正则表达式。
-
在未来的 3.9 中,你可以使用
str.removesuffix来解决这个问题。然而,可能不会像正则表达式解决方案那样快。 -
@HampusLarsson:非常好的建议!但这仅适用于固定字符串,不是吗?这不只是
endswith()的包装吗? -
@Jan 您可以在PEP 616 中了解更多信息。它基本上既是
endswith(),又是给定字符串的索引切片。你是对的,它只会使用固定的字符串。
标签: python loops for-loop time replace