Bagaimana cara mendapatkan ukuran string di Python?

157

Misalnya, saya mendapatkan string:

str = "please answer my question"

Saya ingin menulisnya ke file.

Tapi saya perlu tahu ukuran string sebelum menulis string ke file. Fungsi apa yang bisa saya gunakan untuk menghitung ukuran string?

sayang
sumber
1
"Fungsi apa yang bisa saya gunakan untuk menghitung ukuran string"? Tutorial apa yang Anda gunakan untuk mempelajari Python? Harap perbarui pertanyaan dengan beberapa informasi tentang di mana dan bagaimana Anda belajar Python.
S.Lott
1
saya belajar python sendiri, sekarang saya tahu len (str) dapat mengembalikan ukuran string, ukurannya tergantung pada pengkodean str.
babykick

Jawaban:

258

Jika Anda berbicara tentang panjang string, Anda dapat menggunakan len():

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

Jika Anda membutuhkan ukuran string dalam byte, Anda perlu sys.getsizeof():

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

Juga, jangan panggil variabel string Anda str. Ini membayangi str()fungsi bawaan.

pengguna225312
sumber
33
sys.getsizeofmengembalikan jumlah byte objek Python menempati dalam memori. Itu tidak akan berguna untuk menulis ke file dalam keadaan apa pun.
Duncan
terima kasih, tetapi sys.getsizeof hanya ukuran file? atau ukuran objek python?
babykick
@Duncan jadi bagaimana kalau menyarankan apa yang akan berguna?
cryanbhu
4
@cryanbhu Saya tidak tahu mengapa OP menginginkan ukuran dan itu akan mempengaruhi jawabannya, tetapi mungkin yang paling berguna adalah len(s.encode('utf8'))atau apa pun pengkodean lain yang akan digunakan saat menulis ke file. Juga, jika mereka juga ingin mengakhiri nol maka mereka harus menambahkan 1 untuk itu.
Duncan
33

Python 3:

Jawaban user225312 benar:

A. Untuk menghitung jumlah karakter dalam strobjek, Anda dapat menggunakan len()fungsi:

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

B. Untuk mendapatkan ukuran memori dalam byte yang dialokasikan untuk menyimpan strobjek, Anda dapat menggunakan sys.getsizeof()fungsi

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

Python 2:

Menjadi rumit untuk Python 2.

A. The len()fungsi dalam Python 2 hasil menghitung byte yang dialokasikan untuk menyimpan dikodekan karakter dalam strobjek.

Terkadang itu sama dengan jumlah karakter:

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

Tapi terkadang, itu tidak akan:

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

Itu karena strdapat menggunakan pengodean panjang variabel secara internal. Jadi, untuk menghitung karakter di strAnda harus tahu di mana pengkodean strobjek Anda gunakan. Kemudian Anda dapat mengonversinya menjadi unicodeobjek dan mendapatkan jumlah karakter:

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

B. The sys.getsizeof()fungsi melakukan hal yang sama seperti di Python 3 - ia mengembalikan jumlah byte yang dialokasikan untuk menyimpan seluruh objek string

>>> print(getsizeof('йцы'))
27
>>> print(getsizeof('йцы'.decode('utf8')))
32
Igor Bendrup
sumber
8
>>> s = 'abcd'
>>> len(s)
4
Michal Chruszcz
sumber
2

Anda juga dapat menggunakan str.len () untuk menghitung panjang elemen di kolom

data['name of column'].str.len() 
Vladimir Gavrysh
sumber
1

Cara paling Pythonic adalah dengan menggunakan len(). Perlu diingat bahwa karakter '\' dalam urutan pelarian tidak dihitung dan dapat berbahaya jika tidak digunakan dengan benar.

>>> 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
Robert Grossman
sumber