Форум сайта python.su
0
Подскажите пожалуйста как вычислить размер строки в байтах?
Пытался вот так:
def get_size(text): str_size = 0 # Размер строки в байтах for i in text: if ord(i) <= 255: str_size += 1 else: str_size += 2 return str_size
Отредактировано maxim83632 (Апрель 27, 2015 21:19:01)
Офлайн
221
maxim83632казнить нельзя помиловать ? Это был намек
как вычислить размер вес строки текста
>>> len('string') 6 >>> len('string'[:3]) 3 >>>
>>> su=u'Привет' >>> len(su.encode('cp1251')) 6 >>> len(su.encode('utf-8')) 12
Офлайн
0
maxim83632Эмм… А зачем вам строку переводить в байты если можно для названия ее можно просто обрезать?
P.S пытаюсь обрезать название файла в случае, если оно слишком длинное. Возможно есть стандартные средства.
import sys string = 'sassaasf' x = sys.getsizeof(str(string)) print(x)
Офлайн
0
maxim83632
P.S пытаюсь обрезать название файла в случае, если оно слишком длинное. Возможно есть стандартные средства.
string = 'sassaassasasassf' # Название файла while str(len(string)) not in str(10): string = string[0:-1] print(string)
Отредактировано spikeqzz (Апрель 27, 2015 15:07:12)
Офлайн
0
JOHN_16
2 способ ваш помог, спасибо) Почему-то не додумался перевести в байты и с ними работать.
Офлайн
221
spikeqzzНЕ ВЕРНО
x = sys.getsizeof(str(string))
spikeqzzВот такое посылают на сайт говнокод.ру, это ужас.
string = ‘sassaassasasassf’ # Название файла while str(len(string)) not in str(10): string = string print(string)
spikeqzzпросто это
Это просто обрезать название файла.
string[:10]
>>> import timeit >>> s2="""string = 'sassaassasasassf' # Название файла ... while str(len(string)) not in str(10): ... string = string[0:-1]""" >>> s1="""string='sassaassasasassf' ... string[:10]""" >>> >>> >>> timeit.timeit(s1) 0.10035684764609484 >>> timeit.timeit(s2) 5.764144958001218
Отредактировано JOHN_16 (Апрель 27, 2015 23:33:04)
Офлайн