2016-12-06 47 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

をアクセスする方法を説明し、私はあなたがtranslation tablesを使用することを検討して提案することができます。

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

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

は、Hello Caeuveraet Jioucとなります。私のフランス語を赦してください。

+1

あなたのフランス語は悪いですが、あなたのPythonの知識は良いです。それはおそらく最もパフォーマンスが優れています。 –

2

replace関数は、文字を置き換えた文字列を返します。

コードでは、この戻り値は保存されません。

ループ内の行は、「a = a.replace( 'é'、 'e')」にする必要があります。

最後に出力できるように出力を保存する必要もあります。

E:このpostは、ループ内の変数が

+1

これは動作しません。 'letters'は単に' replace'の結果を 'a'に代入することによって変更されません –

+1

これが最後の文を追加した理由です。" a "はxの値のコピーです(これは値のコピーです)手紙で)。それらのループは参照を渡さない – mimre

+1

いいえ、それらはコピーではありません。それはPythonがどう動くかではありません。 –

関連する問題