Найти - Пользователи
Полная версия: len() и русские буквы
Начало » Python для новичков » len() и русские буквы
1 2
vak
Не получается правильно подсчитать количество букв в строке. Как можно их подсчитать правильно?
bialix
пальцем
tabajara
bialix + 1 )))
vak покажи кусок коду
pythonwin
vak
Не получается правильно подсчитать количество букв в строке. Как можно их подсчитать правильно?
>>> s1 = u'Длина этого текста равна 27'
>>> len(s1)
27
vak

>>> s1 = u'Длина этого текста равна 27'
>>> len(s1)
27
Так у меня тоже получается.
А если просто в переменной?
Конечная задача - вывод на печать текста и подсчет символов для того чтобы текст вписывался в размер бумаги.
Строки, которые, печатаю хранятся в базе PostgreSQL уже в UTF-8. Вообще строки печатаются, выводятся без проблем, но вот с подсчетом символов - не получается у меня.
Печатаю через reportlab
Ничего “умнее” пока не придумал.
pythonwin
vak
Конечная задача - вывод на печать текста и подсчет символов для того чтобы текст вписывался в размер бумаги.
Печатаю через reportlab
Ничего “умнее” пока не придумал.
там должен метод который считает длину строки в pdf, но меня с ним были проблемы - вылетала ошибка.

PS если тебе нужно распечатать текст или создать pdf - посмотри утилиту pisa (http://python.com.ua/forum/viewtopic.php?id=1642)
poltergeist
Может это наведёт на мысли:

text = u'Какой-то текст в перемешку с latin-ицей'
text_utf8 = text.encode('utf-8')
print ‘text (%s):\n%s\n\ntext_utf8 (%s):\n%s’ % (len(text), repr(text), len(text_utf8), repr(text_utf8))

Результат:
text (39):
u'\u041a\u0430\u043a\u043e\u0439-\u0442\u043e \u0442\u0435\u043a\u0441\u0442 \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u0448\u043a\u0443 \u0441 latin-\u0438\u0446\u0435\u0439'

text_utf8 (66):
'\xd0\x9a\xd0\xb0\xd0\xba\xd0\xbe\xd0\xb9-\xd1\x82\xd0\xbe \xd1\x82\xd0\xb5\xd0\xba\xd1\x81\xd1\x82 \xd0\xb2 \xd0\xbf\xd0\xb5\xd1\x80\xd0\xb5\xd0\xbc\xd0\xb5\xd1\x88\xd0\xba\xd1\x83 \xd1\x81 latin-\xd0\xb8\xd1\x86\xd0\xb5\xd0\xb9'
pythonwin
poltergeist
Может это наведёт на мысли:
poltergeist, вопрос в том что vak хочет узнать длину текста в pdf-документе в точках или пикселях.

vak
Печатаю через reportlab
Ничего “умнее” пока не придумал.
vak, как понимаю ты это делаешь для переноса строк?
poltergeist
Я просто думал, что vak получает текст в формате utf-8, и подсчитывая его длину получает неправильное кол-во символов. И чтобы получить точное кол-во знакомест, надо подсчитывать длину юникодного текста, для чего требуется сделать так:

text = ‘some text from PosgreSQL in utf-8’
str_len = len(text.decode('utf-8'))

И я думаю, что я правильно думаю:)
vak
Всем спасибо!
Путем долгих экспериментов получилось решить проблему так:

text = unicode(text, ‘utf-8’)
str_len = len(text)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB