Pythonではさまざまデータの型を扱います。その中でも特によく使われるのが文字列型です。Pythonは他の言語と比べると文字列の操作が簡単で、便利なメソッドも多数用意されています。
今回は、Pythonにおける文字列型について基本的な事項を説明していきます。

文字列型の基本

文字列の表現

Pythonで文字列を表現するにはシングルクォーテーション(’)もしくはダブルクオーテーション(”)のどちらかで囲みます。どちらを使っても構いませんが、必ず統一するようにしましょう。’と”が混ざって使われると紛らわしくなります。
#どちらも同じだが、どちらか一方に統一しましょう

print('Hello, World')
print("Hello, World")

実行結果

Hello, World
Hello, World

文字列の連結と反復

文字列、もしくは文字列を格納した変数は「+」演算子で連結、「*」演算子で反復させることができます。

str1 = 'Python'
str2 = 'Programming'
print(str1 + ' ' + str2)
print(str1 * 3)

実行結果

Python Programming
PythonPythonPython

スライス操作

Pythonの文字列はインデックス(添え字)表記をすることができ、インデックスで文字列のうちの1文字を取り出すことができます。インデックスは1ではなく0から始まることに注意しましょう。また、負の数を指定した場合は右から順番に数えて取り出します。負のインデックスは0ではなく-1から始まることにも注意してください。

str1 = 'Python'
print(str1[3])   #3番目の文字を取り出す
print(str1[-3])  #右から3番目の文字を取り出す

実行結果

h
h

また、Pythonはスライス操作もサポートしています。スライスを利用することで、指定した範囲の文字列だけを取り出すことができます。スライスのやり方は以下の通りです。
文字列[スライスを開始するインデックス:スライスを終了するインデックス]
注意したいのは、「スライスを開始するインデックス」番目の文字はスライス結果に含みますが、「スライスを終了するインデックス」番目の文字は含みません。つまり「スライスを終了するインデックス – 1」番目まで取り出されます。

str1 = 'Python'
print(str1[2:4])  #2番目から3番目まで取り出す
print(str1[1:5])  #1番目から4番目まで取り出す

実行結果

th
ytho

また、スライスを開始するインデックスと終了するインデックスは省略することができ、開始するインデックスを省略すると0を指定したことになり、終了するインデックスを省略するとその文字列のサイズ(=最後の文字まで)を指定したことになります。

str1 = 'Python'
print(str1[:5])   #0番目から4番目まで取り出す
print(str1[1:])   #1番目から最後まで取り出す

実行結果

Pytho
ython

主な文字列メソッド

format

formatは文字列や変数の書式を指定し、別の文字列に埋め込むために使われます。例えば、printで任意の文字列と変数を一緒に出力する際に使われます。

‘任意の文字列{0}{1}…’.format(変数1, 変数2….)

任意の文字列の中で、文字列や変数を埋め込みたい場所に{}を入れます。すると、formatメソッドの引数がその{}に埋め込まれます。複数の文字列や変数を埋め込みたい場合は{0}、{1}といったように添え字とともに文字列に{}を入れ、formatに複数の引数として渡します。

a = 1
b = 2
print('{0} + {1} = {2}'.format(a, b, a + b))

実行結果

1 + 2 = 3

index

indexは、ある文字列に指定した文字または文字列が含まれるかどうかを調べ、含まれる場合はその文字や文字列が見つかった最初のインデックスを返します。

文字列.index(探したい文字列[開始位置, 終了位置])

スライスを利用して探索を開始する位置と終了する位置を指定できます。なお、どちらも省略することができ、両方省略した場合は文字列全体から探します。

str1 = 'python programming'
print(str1.index('th'[1:10]))

実行結果

3

split

splitは文字列を任意の文字列で分割するメソッドです。分割された文字列はリスト型になります。

リスト = ‘文字列’.split(区切り文字列, 最大分割数)

最大分割数は省略することができ、省略した場合は分割できるだけ文字列を分割します。

str1 = 'python, programming, start'
print(str1.split(','))

実行結果

[‘python’, ‘ programming’, ‘ start’]