2016-12-06 148 views
0

想用其ASCII等效替換所有法語字母。Python:用英文替換法語字母

letters = [['é', 'à'], ['è', 'ù'], ['â', 'ê'], ['î', 'ô'], ['û', 'ç']] 

for x in letters: 
    for a in x: 
     a = a.replace('é', 'e') 
     a = a.replace('à', 'a') 
     a = a.replace('è', 'e') 
     a = a.replace('ù', 'u') 
     a = a.replace('â', 'a') 
     a = a.replace('ê', 'e') 
     a = a.replace('î', 'i') 
     a = a.replace('ô', 'o') 
     a = a.replace('û', 'u') 
     a = a.replace('ç', 'c') 

print letters[0][0] 

但是,此代碼打印é。我該如何做這項工作?

+0

你有沒有考慮過使用字典? –

+0

你也可以使用這個庫:https://pypi.python.org/pypi/Unidecode 我不知道它做得更多或更好。 –

回答

9

translationTable = str.maketrans("éàèùâêîôûç", "eaeuaeiouc") 

test = "Héllô Càèùverâêt Jîôûç" 
test = test.translate(translationTable) 
print(test) 

將打印Hello Caeuveraet Jiouc。抱歉我法語不好。

+1

你的法語不好,但是你對Python的知識很好。這可能是最快的性能。 –

2

替換函數返回替換字符的字符串。

在你的代碼中你不存儲這個返回值。

循環中的行應該是「a = a.replace('é','e')」。

您還需要存儲該輸出,以便最後打印它。

E:post介紹瞭如何在循環中的變量可能我建議您考慮使用translation tables訪問

+1

這不起作用。 'letters'不會被簡單地將'replace'的結果賦值給'a'而被改變。 –

+1

這就是爲什麼我添加了最後一句,「a」是x中值的拷貝(它是值的拷貝在信中)。那些循環沒有通過引用 – mimre

+1

不,它們不是副本。這當然不是Python如何工作的。 –