(python utf-8) с использованием 'а', 'ç', 'é', 'è', 'ê', 'ë', 'î', 'ô', 'ù' - PullRequest
0 голосов
/ 18 января 2020

У меня проблемы с ударением в python

Я написал # - - кодирование: utf-8 - - чтобы он мог распознать ударение. Но все равно иногда это не работает. Я получил '?' и когда я использую его после того, как получаю сообщение об ошибке «SyntaxError: не-ASCII символ '\ xc3'»

Почему? Что я должен изменить? Спасибо

(не работает для всех этих символов 'а', 'ç', 'é', 'è', 'ê', 'ë', 'î', 'ô', 'ù ', "'", "'")

это мой код:

# -*- coding: utf-8 -*-

testList = ['à','ç','é','è','ê','ë','î','ô','ù',"‘","’"]

testCharacter = raw_input('test a character : ') # example : é

print(testCharacter) # getting é
print(testCharacter[0]) # getting ? 
print(testCharacter + testCharacter[0]) # getting é?

testCharacterPosition = testList.index(testCharacter) 

print(testCharacterPosition) #getting 2

это результат на моей консоли:

test a character : é
é
?
é?
2

1 Ответ

2 голосов
/ 18 января 2020

Кажется, что вы все еще используете python2 (вам следует подумать о переключении на python3, так как python2 больше не поддерживается).

Если вставить некоторую строку utf8, она кодируется и, следовательно, состоит из нескольких символов Например:

>>> s = 'à'
>>> s
'\xc3\xa0'
>>> s[0]
'\xc3'

Конечно, это напечатает вопросительный знак, так как один только не делает полный символ:

>>> print(s + s[0])
à�

Вы можете преобразовать это в строку Unicode, которая затем состоит из одного символа:

>>> s.decode('utf-8')
u'\xe0'
>>> print(s.decode('utf-8'))
à

Вы можете обойти декодирование при непосредственном использовании строк Юникода в py2:

>>> s = u'à'
>>> s
u'\xe0'

Лучше было бы использовать python3, что упрощает все вещь, чтобы:

>>> s = 'à'
>>> s
'à'
>>>
...