как python2.7 работает с юникодом? Я все больше и больше путаюсь - PullRequest
0 голосов
/ 26 ноября 2011

в Linux, я открыл терминал и ввел python2.7 , а затем ввел коды следующим образом:

>>> s = u'\u0561'
>>> print s
ա
>>> len(s)
1

длина u '\ u0561' равна только 1?Почему? Я узнал, что длина каждого не алфавитного символа составляет 2 ~ 4 байта в юникоде, почему он использует только 1 байт?и я тестирую другие символы Юникода, я обнаружил, что почти вся длина символа Юникода равна 1, почему?

Ответы [ 3 ]

7 голосов
/ 26 ноября 2011

Функция len не считает количество байтов - она ​​считает количество элементов в любой последовательности (в данном случае, количество символов в строке).

1 голос
/ 26 ноября 2011

длина u '\ u0561' только 1? Почему?

Потому что ա - один символ.

Другими словами, по той же причине, что len() из ['hi mom this is an incredibly long string'] равен 1: потому что 'hi mom this is an incredibly long string' - это один элемент списка.

0 голосов
/ 26 ноября 2011

Это дает вам длину в символах, а не в байтах.

\u0561

Это один символ, поэтому длина равна единице.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...