2016-12-06 108 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如何工作的。 –