Adr*_*uno 1 python time loops replace for-loop
我有一个公司名称+商业首字母缩略词的列表,例如:
['Abc Inc','def Gmbh','ghi PLC', 'xhlm SA', 'sojs LLC'] and so on.
Run Code Online (Sandbox Code Playgroud)
我想得到一个没有 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)
Run Code Online (Sandbox Code Playgroud)
您可以加入替换并使用正则表达式:
import re
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',",",".","-"]
lst = ['Abc Inc','def Gmbh','ghi PLC', 'xhlm SA', 'sojs LLC']
rx = re.compile(r'\s*(?:{})$'.format("|".join(substring_adjustment)))
new_list = [rx.sub('', item) for item in lst]
print(new_list)
# ['Abc', 'def', 'ghi', 'xhlm', 'sojs LL']
Run Code Online (Sandbox Code Playgroud)
如您所见,这种方法的问题在于您需要先放置较长的替换项。此外,您的替换列表中有重复项。
话虽如此,您可以将替换列表和正则表达式更改为:
import re
substring_adjustment = ['AB', 'B\.?V', 'GMBH', 'INC\.?', 'LTD', 'NV', 'P\.?L\.?C', 'S[AE]', 'SPA']
lst = ['Abc Inc', 'def Gmbh', 'ghi PLC', 'xhlm SA', 'sojs LLC', 'XXX Management Limited']
rx = re.compile(r'(?i)\s*\b(?:{})$'.format("|".join(substring_adjustment)))
new_list = [rx.sub('', item) for item in lst]
print(new_list)
Run Code Online (Sandbox Code Playgroud)
这为您的示例产生:
['Abc', 'def', 'ghi', 'xhlm', 'sojs LLC', 'XXX Management Limited']
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
69 次 |
最近记录: |