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.getsizeofzwraca 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 strobiekcie, możesz użyć len()funkcji:
>>> print(len('please anwser my question'))
25
B. Aby uzyskać rozmiar pamięci w bajtach przydzielonych do przechowywania strobiektu, 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 strobiekcie.
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ż strmoże wewnętrznie używać kodowania o zmiennej długości . Tak więc, aby policzyć znaki str, powinieneś wiedzieć, jakiego kodowania strużywa twój obiekt. Następnie możesz przekonwertować go na unicodeobiekt 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