[英]How to replace elements in one list with items from another list?
我有一些公司法律表格需要翻译:
ABC GMBH CO & KG
DEF LIMITED LIABILITY CO
XYZ AD
UVW LTEE
这个想法是GMBH CO & KG = GMBH; LLC = AD = LTEE = LIMITED LIABILITY CO
GMBH CO & KG = GMBH; LLC = AD = LTEE = LIMITED LIABILITY CO
我编写了以下代码,但似乎没有用。 有什么想法吗?
file = open("fake.txt","r").read()
col = file.split("\n")
abbr = ['LLC', 'GMBH']
full = [
('LIMITED LIABILITY COMPANY', 'LIMITED LIABILITY CO', 'LTEE', 'LIMITEE','AD', 'AKTZIONERNO DRUZHESTVO'),
('GMBH CO & KG', 'MBH', 'GESELLSCHAFT MIT BESCHRANKTER HAFTUNG')
]
def trans(col):
i=0
while i<len(abbr):
c=0
while c<len(full[i]):
for x in full[i][c]:
if x in col:
col = col.replace(x,abbr[i])
c+=1
i+=1
return col
print trans(col)
您可以创建一个字典,其中所有导致与键相同的缩写的字符串都以该缩写为值。 然后,您将需要遍历输入行以查找字符串。
这就是我的意思:
>>> lines = ["ABC GMBH CO & KG",
... "DEF LIMITED LIABILITY CO",
... "XYZ AD",
... "UVW LTEE"]
>>> abbr_dict = {}
>>> abbr_dict['GMBH CO & KG'] = 'GMBH'
>>> abbr_dict['MBH'] = 'GMBH'
>>> abbr_dict['GESELLSCHAFT MIT BESCHRANKTER HAFTUNG'] = 'GMBH'
>>> abbr_dict['LIMITED LIABILITY COMPANY'] = 'LLC'
>>> abbr_dict['LIMITED LIABILITY CO'] = 'LLC'
>>> abbr_dict['LTEE'] = 'LLC'
>>> abbr_dict['LIMITEE'] = 'LLC'
>>> abbr_dict['AD'] = 'LLC'
>>> abbr_dict['AKTZIONERNO DRUZHESTVO'] = 'LLC'
>>> for line in lines:
... for key in abbr_dict:
... if key in line:
... line = line.replace(key, abbr_dict[key])
... print(line)
... break # This is to prevent multiple replacements on the same line
打印:
ABC GMBH
DEF LLC
XYZ LLC
UVW LLC
请注意,如果输入线具有ABC GMBH AD & KG
类的字符串,这可能不是最佳解决方案。 在这种情况下,它将用GMBH
替换MBH
,从而得到ABC GMBH LLC & KG
,这可能不是您所需要的。
您的代码中有两个问题:
for x in full[i][c]:
这个for将查找每个full[i][c]
每个字符,而不是full[i]
每个元素。
if x in col:
一旦解决了第一个问题,它将尝试与行而不是子字符串的内容完全匹配。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.