Как обрабатывать многобайтовые строки в Python - PullRequest
5 голосов
/ 01 декабря 2011

В PHP есть многобайтовые строковые функции для обработки многобайтовой строки (например, CJK-скрипт). Например, я хочу подсчитать, сколько букв в многобайтовой строке, используя функцию len в python, но она возвращает неточный результат (т.е. количество байтов в этой строке)

japanese = "桜の花びらたち"
print japanese
print len(japanese)#return 21 instead of 7

Есть ли какой-нибудь пакет или функция, подобная mb_strlen в PHP?

Ответы [ 2 ]

9 голосов
/ 01 декабря 2011

Используйте Unicode-строки :

# Encoding: UTF-8

japanese = u"桜の花びらたち"
print japanese
print len(japanese)

Обратите внимание на u перед строкой.

Чтобы преобразовать строку байтов в Unicode, используйте decode: "桜の花びらたち".decode('utf-8')

2 голосов
/ 01 декабря 2011

Попробуйте сначала преобразовать его в unicode:

print len(japanese.decode("utf-8"))

дает 7. Вы работаете с кодированной строкой utf-8, которая действительно имеет 21 байт.

...