177

たとえば、次の文字列を取得します。

str = "please answer my question"

ファイルに書きたい。

ただし、文字列をファイルに書き込む前に、文字列のサイズを知る必要があります。文字列のサイズを計算するには、どの関数を使用できますか?

4

6 に答える 6

289

文字列の長さについて話している場合は、次を使用できますlen()

>>> s = 'please answer my question'
>>> len(s)  # number of characters in s
25

文字列のサイズをバイト単位で指定する必要がある場合は、次のものが必要ですsys.getsizeof()

>>> import sys
>>> sys.getsizeof(s)
58

また、文字列変数を呼び出さないでくださいstr。組み込みstr()関数をシャドウイングします。

于 2011-02-11T09:53:38.980 に答える
41

パイソン 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

パイソン 2:

Python 2 では複雑になります。

A. Python 2の関数は、エンコードされた文字をオブジェクトlen()に格納するために割り当てられたバイト数を返します。str

文字数と同じになる場合もあります。

>>> print(len('abc'))
3

ただし、そうでない場合もあります。

>>> print(len('йцы'))  # String contains Cyrillic symbols
6

これは、可変長エンコーディングを内部でstr使用できるためです。したがって、文字数をカウントするには、オブジェクトが使用しているエンコーディングを知る必要があります。次に、それをオブジェクトに変換して文字数を取得できます。strstrunicode

>>> print(len('йцы'.decode('utf8'))) #String contains Cyrillic symbols 
3

B.関数はsys.getsizeof()Python 3 と同じことを行います -文字列オブジェクト全体を格納するために割り当てられたバイト数を返します

>>> print(getsizeof('йцы'))
27
>>> print(getsizeof('йцы'.decode('utf8')))
32
于 2016-05-16T20:06:29.930 に答える
9
>>> s = 'abcd'
>>> len(s)
4
于 2011-02-11T09:52:51.683 に答える