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?
python
string
string-length
babykick
źródło
źródło
Odpowiedzi:
Jeśli mówisz o długości sznurka, możesz użyć
len()
:Jeśli potrzebujesz rozmiaru ciągu w bajtach, potrzebujesz
sys.getsizeof()
:Nie wywołuj również zmiennej łańcuchowej
str
. Cieniuje wbudowanąstr()
funkcję.źródło
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.Python 3:
odpowiedź użytkownika225312 jest prawidłowa:
A. Aby policzyć liczbę znaków w
str
obiekcie, możesz użyćlen()
funkcji:B. Aby uzyskać rozmiar pamięci w bajtach przydzielonych do przechowywania
str
obiektu, możesz użyćsys.getsizeof()
funkcjiPython 2:
W przypadku Pythona 2 sprawa staje się skomplikowana.
A.
len()
funkcja w Pythonie 2 zwraca liczyć bajtów przeznaczonych do przechowywania zakodowanych znaków wstr
obiekcie.Czasami będzie to równe liczbie znaków:
Ale czasami nie:
Dzieje się tak, ponieważ
str
może wewnętrznie używać kodowania o zmiennej długości . Tak więc, aby policzyć znakistr
, powinieneś wiedzieć, jakiego kodowaniastr
używa twój obiekt. Następnie możesz przekonwertować go naunicode
obiekt i uzyskać liczbę znaków:B.
sys.getsizeof()
funkcja działa tak samo jak w Pythonie 3 - zwraca liczbę bajtów przeznaczonych do przechowywania cały obiekt stringźródło
źródło
Możesz także użyć str.len (), aby policzyć długość elementu w kolumnie
źródło
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.źródło