Наприклад, я отримую рядок:
str = "please answer my question"
Я хочу записати його у файл.
Але мені потрібно знати розмір рядка, перш ніж записати рядок у файл. Яку функцію можна використовувати для обчислення розміру рядка?
Наприклад, я отримую рядок:
str = "please answer my question"
Я хочу записати його у файл.
Але мені потрібно знати розмір рядка, перш ніж записати рядок у файл. Яку функцію можна використовувати для обчислення розміру рядка?
Відповіді:
Якщо ви говорите про довжину рядка, ви можете використовувати len()
:
>>> s = 'please answer my question'
>>> len(s) # number of characters in s
25
Якщо вам потрібен розмір рядка в байтах, вам потрібно sys.getsizeof()
:
>>> import sys
>>> sys.getsizeof(s)
58
Крім того, не називайте змінну рядка str
. Це затінює вбудовану str()
функцію.
sys.getsizeof
повертає кількість байтів, які об'єкт Python займає в пам'яті. Це не стане корисним для запису до файлу за будь-яких обставин.
len(s.encode('utf8'))
чи будь-яке інше кодування буде використано під час запису у файл. Крім того, якщо вони також хочуть завершити нуль, їм потрібно буде додати 1 для цього.
відповідь користувача225312 правильна:
A. Для підрахунку кількості символів в str
об'єкті ви можете використовувати len()
функцію:
>>> print(len('please anwser my question'))
25
B. Щоб отримати розмір пам'яті в байтах, виділених для зберігання str
об'єкта, ви можете використовувати sys.getsizeof()
функцію
>>> from sys import getsizeof
>>> print(getsizeof('please anwser my question'))
50
Це ускладнюється для Python 2.
А.len()
функція в Python 2 повертає кол - у байтах , виділених для зберігання закодованих символів в str
об'єкті.
Іноді це дорівнює кількості символів:
>>> print(len('abc'))
3
Але іноді це не буде:
>>> print(len('йцы')) # String contains Cyrillic symbols
6
Це тому, що str
можна використовувати кодування змінної довжини всередині. Отже, для підрахунку символів str
слід знати, яке кодування використовує ваш str
об'єкт. Потім ви можете перетворити його в unicode
об'єкт і отримати кількість символів:
>>> print(len('йцы'.decode('utf8'))) #String contains Cyrillic symbols
3
B.sys.getsizeof()
функція робить те ж саме , як і в Python 3 - повертає кількість байт , виділених для зберігання всього об'єкта рядки
>>> print(getsizeof('йцы'))
27
>>> print(getsizeof('йцы'.decode('utf8')))
32
>>> s = 'abcd'
>>> len(s)
4
Ви також можете використовувати str.len () для підрахунку довжини елемента в стовпці
data['name of column'].str.len()
Найбільш пітонічним способом є використання len()
. Майте на увазі, що символ "\" у відхідних послідовностях не зараховується і може бути небезпечним, якщо його неправильно використовувати.
>>> len('foo')
3
>>> len('\foo')
3
>>> len('\xoo')
File "<stdin>", line 1
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 0-1: truncated \xXX escape