文字列操作の基本

str(文字列)型で文字列型について少し紹介しましたが、ここではその文字列型オブジェクトの基本的な操作について学習します。pythonのstr型オブジェクトには標準的な文字列操作のメソッドが予め用意されています。

基本操作(strメソッド)

結合

すでに何度か出てきていますが、pythonの文字列の結合は+を使用します。また、続けて複数使用することができます。

text1 = "aaa"
text2 = "bbb"
text3 = "ccc"

text = text1 + text2 + text3 # + で文字列結合
print(text)

また、数値などとは直接結合できずTypeErrorが発生するため、組込みのstr関数を使用します。

label = "pi="
val = 3.14
text =  label + str(val) # strで文字に変換する
print(text)

リストと結合

リストで指定された複数文字列と結合する場合、joinメソッドを使用します。

join
結合文字.join(リスト)

例えば、文字列リストをカンマ区切りの文字列に変換したい場合は以下のようにします。

data = ['aaa', 'bbb', 'ccc', 'ddd', 'eee']
csv = ','.join(data)
print(csv) # aaa,bbb,ccc,ddd,eee

分割(split)

区切り文字で分割したい場合に、splitメソッドを使用します。引数で区切り文字を指定します。戻り値に分割された文字列のリストが返されます。
以下のサンプルはスペースを区切り文字とした文字列分割の例です。

data = "aaa bbb ccc ddd eee"
data_list = data.split(' ')
print(data_list) # ['aaa', 'bbb', 'ccc', 'ddd', 'eee']

置換

文字列を置換する場合は、replaceメソッドを使用します。

文字列置換
元の文字列.replace(置換前, 置換後)

元の文字列はそのままで、新たに作成された文字列が戻り値で返されます。

text = 'xxxbbbccc'
new_text = text.replace('x', 'a') # 置換して新たな文字列を取得する

print(text) # xxxbbbccc(変更されない)
print(new_text) # aaabbbccc

シーケンスとしての操作

pythonの文字列はシーケンスです。したがって、リスト等で利用できたインデックスの指定等が文字列でも同様に利用することができます。

N番目の文字の取得

N番目の文字を取得する場合は最初の文字を0番目としたインデックスを指定します。例えば、最初、3番目、最後の文字を取得する場合、以下のようにします。

text = 'abcdefghigklmn'

print(text[0]) # a 先頭(0番目)
print(text[3]) # d 3番目
print(text[-1]) # n 末尾

部分文字列の取得

スライスを使用することで部分文字列を取得することができます。

text = 'abcdefghigklmn'
print(text[0:3]) # abc

文字列が含まれるかどうかを判定する

inを使用することで包含を判定することができます。

text = 'abcdefg'
print('cde' in text) # True

ループ(1文字ずつ処理)

シーケンスなので、ループで一文字ずつ処理をすることもできます。

text = 'abcdefghigklmn'
for s in text:
    print(s)

検索(find)

findメソッドを使用します。対象文字列が見つかれば最初の文字列インデックスを返します。ない場合は-1を返します。末尾から検索したい場合はrfindを使用します。

text = 'abcabc'

print(text.find('bc')) # 1
print(text.rfind('bc')) # 4

また、countを使用するといくつ含まれているかを取得することができます。

text = 'abcdabcd'
print(text.count('bc')) # 2

トリミング(strip)

文字列の前後にある不要な空白(スペース・タブ文字・改行(\r, \n))を除去する場合はstripメソッドを使用します。また、前か後ろだけ除去する場合はそれぞれlstrip, rstripを使用します。

text = ' abcabc '
print(text.strip()) # abcabc
print(text.lstrip()) # abcabc 左側だけstrip
print(text.rstrip()) #  abcabc 右側だけstrip

大文字/小文字変換

文字列を大文字、小文字に変換する場合はそれぞれupperメソッド、lowerメソッドを使用します。
また、先頭だけ大文字にする場合は、capitalizeメソッドを使用します。いずれも戻り値に新たな文字列が返されます。

text = 'abcDEFG'

print(text.upper()) # ABCDEFG
print(text.lower())# abcdefg
print(text.capitalize())# Abcdefg