2016-12-06 3 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')".

Вам также необходимо сохранить этот выход, чтобы вы могли распечатать его в конце.

е: Это post объясняет, как переменные внутри петли доступны

+1

Это не сработает. 'буквы' не будут мутированы, просто присваивая результат' replace' 'a' –

+1

Вот почему я добавил последнее предложение,« a »- это копия значения in in x (которое является копией значения в письмах). Эти петли не передают ссылку – mimre

+1

Нет, они не являются копиями. Это, конечно, не так, как работает Python. –

 Смежные вопросы

  • Нет связанных вопросов^_^