web-dev-qa-db-ja.com

Pythonで文字列のサイズを取得する方法

例えば、私は文字列を取得します:

str = "please answer my question"

ファイルに書きたいのですが。

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

127
babykick

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

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

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

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

また、文字列変数strを呼び出さないでください。組み込みの str() 関数を影にします。

216
user225312

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

P.S 32ビットWindows上で Anaconda Python の下でコードサンプルをテストしました。

32
Igor Bendrup
>>> s = 'abcd'
>>> len(s)
4
8
Michal Chruszcz

Str.len()を使って列の要素の長さを数えることもできます。

data['name of column'].str.len() 
2

最も--- Pythonic方法は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
1
Robert Grossman