Python'da bir dize boyutu nasıl alınır?


157

Örneğin, bir dize alıyorum:

str = "please answer my question"

Bir dosyaya yazmak istiyorum.

Ama ben dizeyi dosyaya yazmadan önce dizenin boyutunu bilmek gerekir. Dizenin boyutunu hesaplamak için hangi işlevi kullanabilirim?


1
"dizenin boyutunu hesaplamak için hangi işlevi kullanabilirim"? Python'u öğrenmek için hangi öğreticiyi kullanıyorsunuz? Lütfen soruyu Python'u nerede ve nasıl öğrendiğinizle ilgili bazı bilgilerle güncelleyin .
S.Lott

1
kendim python öğrenmek, şimdi biliyorum len (str) dize boyutunu döndürebilir, boyutu str kodlamasına bağlıdır.
babykick

Yanıtlar:


258

Dizenin uzunluğu hakkında konuşuyorsanız, şunları kullanabilirsiniz len():

>>> s = 'please answer my question'
>>> len(s)  # number of characters in s
25

Dizenin bayt cinsinden boyutuna ihtiyacınız varsa, aşağıdakilere ihtiyacınız vardır sys.getsizeof():

>>> import sys
>>> sys.getsizeof(s)
58

Ayrıca, dize değişkeninizi çağırma str. Yerleşik str()işlevi gölgelendirir .


33
sys.getsizeofPython nesnesinin bellekte kapladığı bayt sayısını döndürür. Bu hiçbir durumda bir dosyaya yazmak için yararlı olmayacaktır.
Duncan

teşekkürler, ama sys.getsizeof (s) sadece dosyanın boyutu nedir? veya python nesnesinin boyutu?
babykick

@Duncan Peki bunun yerine neyin yararlı olacağını öne sürmeye ne dersiniz?
cryanbhu

4
@cryanbhu Ben OP neden boyutu istediğini bilmiyorum ve bu cevap etkileyecektir, ama muhtemelen en yararlı olurdu len(s.encode('utf8'))ya da dosyaya yazarken diğer kodlama kullanılacak ne olacak. Ayrıca, sonlandırma null değerini de istiyorlarsa, bunun için 1 eklemeleri gerekir.
Duncan

33

Python 3:

user225312 kullanıcısının yanıtı doğru:

C.str Nesnedeki karakter sayısını saymak için len()işlevi kullanabilirsiniz :

>>> print(len('please anwser my question'))
25

B.str Nesneyi saklamak için ayrılan baytlarda bellek boyutu elde etmek için sys.getsizeof()işlevi kullanabilirsiniz

>>> from sys import getsizeof
>>> print(getsizeof('please anwser my question'))
50

Python 2:

Python 2 için karmaşıklaşıyor.

A.len() 2 döner dükkanına ayrılan bayt saymak Python fonksiyon karakterleri kodlanmış bir de strnesne.

Bazen karakter sayısına eşit olur:

>>> print(len('abc'))
3

Ama bazen, olmayacak:

>>> print(len('йцы'))  # String contains Cyrillic symbols
6

Çünkü dahili olarak değişken uzunluklu kodlamastr kullanabilir . Yani, içindeki karakterleri saymak için nesnenizin hangi kodlamayı kullandığını bilmelisiniz . Ardından nesneyi dönüştürebilir ve karakter sayısı elde edebilirsiniz:strstrunicode

>>> print(len('йцы'.decode('utf8'))) #String contains Cyrillic symbols 
3

B.sys.getsizeof() işlevi Python 3 ile aynı şeyi yapar - bu depolamak için ayrılan bayt sayısını döndürür bütün dize nesne

>>> print(getsizeof('йцы'))
27
>>> print(getsizeof('йцы'.decode('utf8')))
32


2

Sütundaki öğenin uzunluğunu saymak için str.len () öğesini de kullanabilirsiniz.

data['name of column'].str.len() 

1

En Pythonic yolu kullanmaktır len(). Kaçış dizisindeki '\' karakterinin sayılmadığını ve doğru kullanılmadığında tehlikeli olabileceğini unutmayın.

>>> 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
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.