如何将一个列表中的元素替换为另一个列表中的项目?

2024-06-15 02:28:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要翻译一些公司法律表格:

ABC GMBH CO & KG
DEF LIMITED LIABILITY CO
XYZ AD
UVW LTEE

这个想法是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)

Tags: translencoladfullfilegmbhabbr
2条回答

代码中有两个问题:

for x in full[i][c]:

for将查找每个full[i][c]的每个字符,而不是full[i]的每个元素。你知道吗

if x in 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的字符串,那么这可能不是最佳解决方案。在这种情况下,它会将MBH替换为GMBH给予ABC GMBH LLC & KG,这可能不是您需要的。你知道吗

相关问题 更多 >