如何在Python中获取string的大小?
例如,我得到一个string:
str = "please answer my question"
我想写它到一个文件。
但是,在将string写入文件之前,我需要知道string的大小。 我可以使用什么函数来计算string的大小?
如果你正在谈论string的长度,你可以使用len()
:
>>> s = 'please answer my question' >>> len(s) # number of characters in s 25
如果你需要字节的大小,你需要sys.getsizeof()
:
>>> import sys >>> sys.getsizeof(s) 58
另外,不要调用你的stringstr
。 它隐藏了内置的str()
函数。
Python 3. *:
user225312的回答是正确的:
A.要计算str
对象中的字符数,可以使用len()
函数:
>>> print(len('please anwser my question')) 25
B.要获得分配给存储str
对象的内存大小,可以使用sys.getsizeof()
函数
>>> from sys import getsizeof >>> print(getsizeof('please anwser my question')) 50
Python 2. *:
Python 2变得越来越复杂了。
A. Python 2中的len()
函数返回分配的字节数,以存储str
对象中的编码字符 。
有时候它会等于字符数:
>>> print(len('abc')) 3
但有时候,它不会:
>>> print(len('йцы')) #String contains cyrillic symbols 6
这是因为str
可以在内部使用可变长度编码 。 所以,要计算str
字符,您应该知道str
对象正在使用哪种编码。 然后你可以把它转换成unicode
对象并获得字符数:
>>> print(len('йцы'.decode('utf8'))) #String contains Cyrillic symbols 3
B. sys.getsizeof()
函数和Python 3一样 – 它返回分配的字节数来存储整个string对象
>>> print(getsizeof('йцы')) 27 >>> print(getsizeof('йцы'.decode('utf8'))) 32
PS我已经在32位Windows上的Anaconda Python下testing了我的代码示例
>>> s = 'abcd' >>> len(s) 4
最Python的方法是使用len()
。 请记住,转义序列中的'\'字符不计算在内,如果使用不正确可能会很危险。
>>> 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