たとえば、次の文字列を取得します。
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()
関数をシャドウイングします。
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. 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 と同じことを行います -文字列オブジェクト全体を格納するために割り当てられたバイト数を返します
>>> print(getsizeof('йцы'))
27
>>> print(getsizeof('йцы'.decode('utf8')))
32
>>> s = 'abcd'
>>> len(s)
4