如何在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