Python 入門

ホーム > Python のタイプとオブジェクト > 文字列

文字列

スポンサーリンク

Python - 文字列リテラル

文字列は ' または " によって記述できます。

例えば ' で文字列リテラルが始まったら、' で終わります。 文字データ中に区切り文字と同じものが出現するときはエスケープ文字 (=バックスラッシュ) でエスケープします。 " の場合も同様です。 ちなみに、エスケープ文字は C 言語の場合とほぼ同様です。

>>> a = 'CA'
>>> a
'CA'
>>> b = "TX"
>>> b
'TX'
>>> c = 'ABC\'D'
>>> c
"ABC'D"

複数行にわたる文字列を記述する場合は、\n などのエスケープシーケンスを用いることもできますが、 ''' または """ を用いて文字列を記述することもできます。

>>> e = '''
... Hello
... My name is
... Keisuke Oyama.
... '''
>>> e
'\nHello\nMy name is\nKeisuke Oyama.\n'
>>>

結合と繰り返し

文字列の結合をするために + 演算子が使えます。

>>> a = 'Hello'
>>> b = 'world'
>>> a + ', ' + b
'Hello, world'

文字列を繰り返すためには * 演算子を用いて、繰り返し回数を指定することができます。

>>> a * 2
'HelloHello'

文字列中の文字へのインデックスアクセス

文字列中のそれぞれの文字へは0ベースのインデックスでアクセス可能です。

>>> a[0]
'H'
>>> a[1]
'e'

また文字列の終端から1文字目、2文字目、・・・という風にアクセスするには、マイナスの記号を用いて次のようにします。

>>> a[-1]
'o'
>>> a[-2]
'l'

部分文字列

コロン : を用いて、文字列中の部分文字列を取得できます。

基本的に [start:end] としますが、省略すると全部ということになります。 例えば [:3] とすると、「先頭からインデックス 3 より前までの部分文字列」になります。

>>> a[1:3]
'el'
>>> a[3:]
'lo'
>>> a[:-2]
'Hel'

文字列に使える関数

文字列操作用のビルトイン関数が多数用意されています。

文字列の長さを求めるには len 関数、大文字にするには upper 関数など、 他のプログラミング言語を扱ったことのある人なら、ある程度直感的にわかると思います。

>>> len(a)
5
>>> a.find('e')
1
>>> a.upper()
'HELLO'

ちなみに、dir関数を用いると、今扱っているオブジェクトのアトリビュートが取得できます。(アトリビュートについては別のページで扱います)

>>> dir(a)
['__add__', '__class__', '__contains__', '__delattr__', '__doc__', 
'__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', 
'__getnewargs__', '__gt__', '__hash__', '__init__', '__iter__', '__le__', 
'__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', 
'__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', 
'__str__', '__subclasshook__', '_formatter_field_name_split', '_formatter_parser', 
'capitalize', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 
'format', 'index', 'isalnum','isalpha', 'isdecimal', 'isdigit', 'isidentifier', 
'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper', 
'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'replace', 
'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 
'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 
'upper', 'zfill']

これによって、文字列 a が持つ関数がわかるので、help 関数にその名前を渡すと、 その関数の意味、用法がわかります。

>>> help(a.find)
Help on built-in function find:

find(...)
     S.find(sub[, start[, end]]) -> int

     Return the lowest index in S where substring sub is found,
     such that sub is contained within s[start:end].  Optional
     arguments start and end are interpreted as in slice notation.

     Return -1 on failure.

この方法は文字列操作に限ったことではありませんので、覚えておくと役に立ちます。

フォーマット

文字列のフォーマットは次のようにします。

>>> '{0}, world!'.format(a)
'Hello, world!'

桁 (精度) の指定など、C 言語などの指定に似ています。ここでは以下の例を示します。

>>> x = 10/3
>>> '{0:.3f}'.format(x)
'3.333'
>>> '{:.1f}'.format(x)
'3.3'
>>> '{0:.3f}, {0:.0f}'.format(x)
'3.333, 3'
>>> '{:,}'.format(12345678)
'12,345,678'

フォーマットは開発時にいろいろな場面で必要になるので、また他の機会にフォーマットの記事を取り上げたいと思います。

スポンサーリンク
ホーム > Python のタイプとオブジェクト > 文字列