Na przykład otrzymuję ciąg:
str = "please answer my question"
Chcę to zapisać do pliku.
Ale muszę znać rozmiar ciągu przed zapisaniem ciągu do pliku. Jakiej funkcji mogę użyć do obliczenia rozmiaru ciągu?
Na przykład otrzymuję ciąg:
str = "please answer my question"
Chcę to zapisać do pliku.
Ale muszę znać rozmiar ciągu przed zapisaniem ciągu do pliku. Jakiej funkcji mogę użyć do obliczenia rozmiaru ciągu?
Odpowiedzi:
Jeśli mówisz o długości sznurka, możesz użyć len()
:
>>> s = 'please answer my question'
>>> len(s) # number of characters in s
25
Jeśli potrzebujesz rozmiaru ciągu w bajtach, potrzebujesz sys.getsizeof()
:
>>> import sys
>>> sys.getsizeof(s)
58
Nie wywołuj również zmiennej łańcuchowej str
. Cieniuje wbudowaną str()
funkcję.
sys.getsizeof
zwraca liczbę bajtów zajmowanych przez obiekt Pythona w pamięci. W żadnych okolicznościach nie przyda się to do zapisu do pliku.
len(s.encode('utf8'))
lub jakiekolwiek inne kodowanie, które będzie używane podczas zapisywania do pliku. Ponadto, jeśli chcą również kończącego null, będą musieli dodać 1 do tego.
odpowiedź użytkownika225312 jest prawidłowa:
A. Aby policzyć liczbę znaków w str
obiekcie, możesz użyć len()
funkcji:
>>> print(len('please anwser my question'))
25
B. Aby uzyskać rozmiar pamięci w bajtach przydzielonych do przechowywania str
obiektu, możesz użyć sys.getsizeof()
funkcji
>>> from sys import getsizeof
>>> print(getsizeof('please anwser my question'))
50
W przypadku Pythona 2 sprawa staje się skomplikowana.
A.len()
funkcja w Pythonie 2 zwraca liczyć bajtów przeznaczonych do przechowywania zakodowanych znaków w str
obiekcie.
Czasami będzie to równe liczbie znaków:
>>> print(len('abc'))
3
Ale czasami nie:
>>> print(len('йцы')) # String contains Cyrillic symbols
6
Dzieje się tak, ponieważ str
może wewnętrznie używać kodowania o zmiennej długości . Tak więc, aby policzyć znaki str
, powinieneś wiedzieć, jakiego kodowania str
używa twój obiekt. Następnie możesz przekonwertować go na unicode
obiekt i uzyskać liczbę znaków:
>>> print(len('йцы'.decode('utf8'))) #String contains Cyrillic symbols
3
B.sys.getsizeof()
funkcja działa tak samo jak w Pythonie 3 - zwraca liczbę bajtów przeznaczonych do przechowywania cały obiekt string
>>> print(getsizeof('йцы'))
27
>>> print(getsizeof('йцы'.decode('utf8')))
32
>>> s = 'abcd'
>>> len(s)
4
Możesz także użyć str.len (), aby policzyć długość elementu w kolumnie
data['name of column'].str.len()
Najbardziej Pythonowym sposobem jest użycie len()
. Pamiętaj, że znak „\” w sekwencjach ucieczki nie jest liczony i może być niebezpieczny, jeśli nie zostanie użyty poprawnie.
>>> 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