簡體   English   中英

如何用另一個列表中的項目替換一個列表中的元素?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM