Не существует правильного прямого подхода с любым типом «строки Unicode».
Даже строка Python "Unicode" UTF-16 имеет символы переменной длины, поэтому вы не можете просто вырезать с помощью ustring [: 5]. Поскольку некоторые точки кода Unicode могут использовать более одного «символа», то есть суррогатные пары.
Поэтому, если вы хотите сократить 5 кодовых точек (обратите внимание, что это не символов ), чтобы вы могли проанализировать текст, см. http://en.wikipedia.org/wiki/UTF-8 и http://en.wikipedia.org/wiki/UTF-16 определений. Поэтому вам нужно использовать битовые маски для определения границ.
Также вы все еще не получаете персонажей. Потому что например. Слово «שָלוֹם» - мир на иврите «шалом» состоит из 4 символов и 6 кодовых точек: буква «shin», гласный «a», буква «lamed», буква «vav» и гласный «o» и конечная буква «mem».
То есть символ не кодовая точка .
То же самое для большинства западных языков, где буква с диакритическими знаками может быть представлена как две кодовые точки. Найдите, например, «нормализация Юникода».
Итак ... Если вам действительно нужно 5 первых символов, вам нужно использовать такие инструменты, как библиотека ICU. Например, есть библиотека ICU для Python, которая обеспечивает итератор границ символов.