はじめに
文字列の操作についてまとめました。
基本操作
初期化
文字列は''
で囲うことで認識される。
変数を初期化するときは(変数)='(文字列)'
と記述する。
>>> s = 'test'
>>> s
'test'
>>> print(s)
test
インデックス
文字列のインデックスは(文字列)[番号]
で表示できる。
番号は0番目からスタートする。
# testの2文字目を表示する
>>> 'test'[1]
'e'
# 変数sの2文字目を表示する
>>> s = 'apple'
>>> s[1]
'p'
インデックスは負の数も指定できる。負の数は後ろから1、2、...と順番付けされる。
# 文字列'test'のうしろから1番目、2番目を表示する
>>> 'test'[-1]
't'
>>> 'test'[-2]
's'
# 変数sのうしろから1番目、2番目を表示する
>>> s = 'apple'
>>> s[-1]
'e'
>>> s[-2]
'l'
連結
- 文字列は
+
で連結することができる。
# 2つの文字列を連結する
>>> 'hot' + 'dog'
'hotdog'
# 文字列を持つ変数2つを連結する
>>> s = 'hot'
>>> t = 'dog'
>>> s + t
'hotdog'
- 文字列を繰り返し連結するときは
*
を使用する。
>>> 'b' + 'e'*2 + 'r'
'beer'
スライス
スライスとは文字列の連続した一部を抜き出すということ。
例えばapple
という文字列だと、以下のようになる。
インデックスの順番と数え方が異なるため、注意する必要がある。
a | p | p | l | e | ||||||
---|---|---|---|---|---|---|---|---|---|---|
↑ | ↑ | ↑ | ↑ | ↑ | ↑ | |||||
0 | 1 | 2 | 3 | 4 | 5 |
# appleの1文字目と2文字目を表示する
>>> 'apple'[0:2]
'ap'
# appleの4文字名以降を表示する
>>> 'apple'[3:]
'le'
# appleの3文字目までを表示する
>>> 'apple'[:3]
'app'
ステップ
元の文字列から、いくつか飛ばした文字列を作成する場合はステップを使用する。
# 1文字目を表示する
>>> 'あいうえおかきくけこさしすせそ'[0]
'あ'
# 11文字目を表示する
>>> 'あいうえおかきくけこさしすせそ'[10]
'さ'
# 1文字目から14文字目まで5つ飛ばしで表示する
>>> 'あいうえおかきくけこさしすせそ'[0:14:5]
'あかさ'
# 4文字目から14文字目まで5つ飛ばしで表示する
>>> 'あいうえおかきくけこさしすせそ'[3:14:5]
'えけせ'
文字列の長さを数える
文字列の長さを取得するときはlen()
を利用する。
>>> len('apple')
5
# 空白もカウントされる
>>> len('I like apple.')
13
定型文に文字列を差し込む(format)
定型文に同じ文字列を挿入したい場合は関数format
を使用する。
formatは関数であり、関数は(変数名).(関数名)(引数)
で呼び出すことができる。
# {}でformatで使用する部分を指定できる
>>> s = '{}は「{}」の呪文を唱えた'
# {}には引数が順番に挿入される
>>> s.format('シンドバット', 'ひらけごま')
'シンドバットは「ひらけごま」の呪文を唱えた'
# 引数の番号を指定することができる
>>> s = '{0}は「{1}」の呪文を唱えた。{0}は{3}にダメージ{2}を与えた。'
>>> s.format('プレイヤー','ファイアボール','2000','スライム')
'プレイヤーは「ファイアボール」の呪文を唱えた。プレイヤーはスライムにダメージ2000を与えた。'
置換
文字列を何か別の文字列に置換したいときは関数replace
を使用する。
>>> name = '佐藤 田中 鈴木 佐藤 伊藤'
# 佐藤を山本に置換する
>>> name.replace('佐藤','山本')
'山本 田中 鈴木 山本 伊藤'
# 半角スペースをカンマと半角スペースに置換する
>>> name.replace(' ',', ')
'佐藤, 田中, 鈴木, 佐藤, 伊藤'