たとえば、文字列を取得します。
str = "please answer my question"
ファイルに書き込みたいのですが。
しかし、文字列をファイルに書き込む前に、文字列のサイズを知る必要があります。文字列のサイズを計算するためにどの関数を使用できますか?
たとえば、文字列を取得します。
str = "please answer my question"
ファイルに書き込みたいのですが。
しかし、文字列をファイルに書き込む前に、文字列のサイズを知る必要があります。文字列のサイズを計算するためにどの関数を使用できますか?
回答:
文字列の長さについて話している場合は、次を使用できますlen()
。
>>> s = 'please answer my question'
>>> len(s) # number of characters in s
25
文字列のバイト単位のサイズが必要な場合は、次のものが必要ですsys.getsizeof()
。
>>> import sys
>>> sys.getsizeof(s)
58
また、文字列変数を呼び出さないでくださいstr
。組み込みstr()
関数を隠蔽します。
sys.getsizeof
Pythonオブジェクトがメモリ内で占有しているバイト数を返します。これは、どのような状況でもファイルへの書き込みには役立ちません。
len(s.encode('utf8'))
、ファイルに書き込むときに他のエンコーディングを使用するのが最も便利でしょう。また、終端のnullも必要な場合は、そのために1を追加する必要があります。
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では複雑になります。
A.len()
Python 2 の関数は、ストアに割り当てられたバイト数を返しますエンコードされた文字をastr
オブジェクトます。
時々それは文字数と等しくなります:
>>> 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のように同じことを行い-それは保存するために割り当てられたバイト数を返す文字列全体のオブジェクトを
>>> print(getsizeof('йцы'))
27
>>> print(getsizeof('йцы'.decode('utf8')))
32
str.len()を使用して、列の要素の長さをカウントすることもできます
data['name of column'].str.len()
最も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