Ví dụ: tôi nhận được một chuỗi:
str = "please answer my question"
Tôi muốn viết nó vào một tập tin.
Nhưng tôi cần biết kích thước của chuỗi trước khi viết chuỗi vào tệp. Tôi có thể sử dụng hàm nào để tính kích thước của chuỗi?
Ví dụ: tôi nhận được một chuỗi:
str = "please answer my question"
Tôi muốn viết nó vào một tập tin.
Nhưng tôi cần biết kích thước của chuỗi trước khi viết chuỗi vào tệp. Tôi có thể sử dụng hàm nào để tính kích thước của chuỗi?
Câu trả lời:
Nếu bạn đang nói về độ dài của chuỗi, bạn có thể sử dụng len()
:
>>> s = 'please answer my question'
>>> len(s) # number of characters in s
25
Nếu bạn cần kích thước của chuỗi theo byte, bạn cần sys.getsizeof()
:
>>> import sys
>>> sys.getsizeof(s)
58
Ngoài ra, đừng gọi biến chuỗi của bạn str
. Nó làm mờ str()
chức năng tích hợp.
sys.getsizeof
trả về số byte mà đối tượng Python chiếm trong bộ nhớ. Điều đó sẽ không hữu ích để ghi vào một tệp trong mọi trường hợp.
len(s.encode('utf8'))
hoặc bất kỳ mã hóa nào khác sẽ được sử dụng khi ghi vào tệp. Ngoài ra, nếu họ cũng muốn một null kết thúc thì họ sẽ cần thêm 1 cho điều đó.
Câu trả lời của user225312 là đúng:
A. Để đếm số lượng ký tự trong str
đối tượng, bạn có thể sử dụng len()
hàm:
>>> print(len('please anwser my question'))
25
B. Để có được kích thước bộ nhớ theo byte được phân bổ để lưu trữ str
đối tượng, bạn có thể sử dụng sys.getsizeof()
hàm
>>> from sys import getsizeof
>>> print(getsizeof('please anwser my question'))
50
Nó trở nên phức tạp đối với Python 2.
A. Các len()
chức năng trong Python 2 lợi nhuận đếm byte được phân bổ để lưu trữ mã hóa ký tự trong một str
đối tượng.
Đôi khi nó sẽ bằng số lượng ký tự:
>>> print(len('abc'))
3
Nhưng đôi khi, nó sẽ không:
>>> print(len('йцы')) # String contains Cyrillic symbols
6
Đó là bởi vì str
có thể sử dụng mã hóa có độ dài thay đổi trong nội bộ. Vì vậy, để đếm các ký tự trong str
bạn nên biết mã hóa str
đối tượng của bạn đang sử dụng. Sau đó, bạn có thể chuyển đổi nó thành unicode
đối tượng và nhận được số ký tự:
>>> print(len('йцы'.decode('utf8'))) #String contains Cyrillic symbols
3
B. Các sys.getsizeof()
chức năng làm điều tương tự như trong Python 3 - nó trả về số byte được phân bổ để lưu trữ các đối tượng chuỗi toàn bộ
>>> print(getsizeof('йцы'))
27
>>> print(getsizeof('йцы'.decode('utf8')))
32
>>> s = 'abcd'
>>> len(s)
4
Bạn cũng có thể sử dụng str.len () để đếm chiều dài của phần tử trong cột
data['name of column'].str.len()
Cách Pythonic nhất là sử dụng len()
. Hãy nhớ rằng ký tự '\' trong chuỗi thoát không được tính và có thể gây nguy hiểm nếu không được sử dụng đúng cách.
>>> 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