Измените первое поле первого ряда сетки с помощью начальной загрузки

Вы сказали: у меня есть строка: «Я хочу получить длину манипуляции на основе позиций персонажа и так далее. Проблема в том, что первый ë подсчитывается дважды, или я полагаю, что ë находится в положении 0 и 'находится в позиции 1.

Первым шагом в работе над любой проблемой Юникода является точное определение того, что находится в ваши данные; не догадываюсь. В этом случае ваша догадка верна; это не всегда будет.

«Именно то, что находится в ваших данных»: используйте встроенную функцию repr () (для большего количества вещей помимо юникода). Полезное преимущество показа результата repr () в вашем вопросе заключается в том, что у ответчиков есть то, что у вас есть. Обратите внимание, что ваш текст отображается только в 4-х позициях вместо 5 с некоторыми браузерами / шрифтами - «e» и его диакритики, а «a» искажены вместе в одной позиции.

Вы можете использовать unicodedata .name (), чтобы рассказать вам, что каждый компонент.

Вот пример:

# coding: utf8
import unicodedata
x = u"ë́aúlt"
print(repr(x))
for c in x:
    try:
        name = unicodedata.name(c)
    except:
        name = "<no name>"
    print "U+%04X" % ord(c), repr(c), name

Результаты:

u'\xeb\u0301a\xfalt'
U+00EB u'\xeb' LATIN SMALL LETTER E WITH DIAERESIS
U+0301 u'\u0301' COMBINING ACUTE ACCENT
U+0061 u'a' LATIN SMALL LETTER A
U+00FA u'\xfa' LATIN SMALL LETTER U WITH ACUTE
U+006C u'l' LATIN SMALL LETTER L
U+0074 u't' LATIN SMALL LETTER T

Теперь прочитайте @ bobince's ответ: -)

0
задан Şivā SankĂr 1 March 2019 в 15:34
поделиться