Pythonの文字列操作まとめ。出力・連結・分割・置換の使い方
Pythonの文字列操作の基本を、この記事1本にまとめて解説します。
- 出力: print関数、f-string、formatメソッド
- 連結: f-string、join、+演算子
- 分割: split、rsplit、splitlines、re.split
- 置換: replace、re.sub、translate
文字列の出力:print関数
Pythonでは print 関数で文字列を出力します。自動的に末尾へ改行が挿入されます。
print('Hello')
print('World')
# Hello
# World
改行せずに出力する:endオプション
改行したくない場合は end オプションに終端文字を指定します。
print('Hello', end='')
print('World')
# HelloWorld
print('Hello', end=' ')
print('World')
# Hello World
複数行を出力する:改行コードと三連引用符
文字列中に改行コード \n を入れるか、三連引用符を使います。
print('Hello\nWorld')
# Hello
# World
print('''Hello
World''')
# Hello
# World
Windowsのテキストファイルでは改行コードが \r\n になる点に注意してください。
変数の出力と型の確認
a = 'Hello World'
print(a)
# Hello World
文字列型と数値型の混同には注意が必要です。型は type で確認できます。
a = '110'
print(type(a)) # <class 'str'>
b = int(a)
print(type(b)) # <class 'int'>
変数を埋め込んで出力:f-stringとformatメソッド
f-string(Python 3.6以上・推奨)
Python 3.6以降では**フォーマット済み文字列リテラル(f-string)**が使えます。現在はこの書き方が主流です。
a = 'banana'
print(f'I like {a}')
# I like banana
formatメソッド
f-stringが使えない環境や、テンプレート文字列を変数として持ち回る場合は format メソッドを使います。
a = 'banana'
print('I like {}'.format(a))
# I like banana
インデックス(添え字)で出力位置を指定できます。
print('I like {0},{2} and {1}'.format('apple', 'banana', 'orange'))
# I like apple,orange and banana
キーワードで指定することもできます。
print('I like {a},{c},{b}'.format(a='apple', b='banana', c='orange'))
# I like apple,orange,banana
文字列の連結
f-stringで連結
a = 'I'
b = ' like'
c = ' apple'
str1 = f'{a}{b}{c}'
print(str1)
# I like apple
joinメソッドでリストを連結
リストの要素を区切り文字でつないで1つの文字列にするには join を使います。
fruit = ['apple', 'banana', 'orange']
str1 = ','.join(fruit)
print(str1)
# apple,banana,orange
+演算子で連結
print('Hello World' + ' and nice to meet you')
# Hello World and nice to meet you
+ 演算子での連結は、区切りの半角スペースを自分で入れる必要がある点に注意してください。
なお print に複数の値をカンマで渡すと、半角スペース区切りで出力されます(連結ではなくprintの機能です)。
print('Hello World', 'and nice to meet you')
# Hello World and nice to meet you
文字列の分割
splitメソッド
最も一般的な分割方法です。文字列.split(デリミタ, 分割回数) で使います。引数を省略すると空白文字で分割されます。
str1 = 'apple banana orange pineapple'
print(str1.split())
# ['apple', 'banana', 'orange', 'pineapple']
str1 = 'apple-banana-orange-pineapple'
print(str1.split('-'))
# ['apple', 'banana', 'orange', 'pineapple']
分割回数も指定できます。
str1 = 'apple-banana-orange-pineapple'
print(str1.split('-', 1))
# ['apple', 'banana-orange-pineapple']
print(str1.split('-', 2))
# ['apple', 'banana', 'orange-pineapple']
rsplitメソッドで後ろから分割
分割回数を後方から数えたい場合は rsplit を使います。
str1 = 'apple-banana-orange-pineapple'
print(str1.rsplit('-', 1))
# ['apple-banana-orange', 'pineapple']
splitlinesメソッドで改行分割
改行コードで分割するには splitlines を使います。\n と \r\n が混在していても分割できます。
str1 = 'one apple\ntwo banana\nthree orange\r\nfour pineapple'
print(str1.splitlines())
# ['one apple', 'two banana', 'three orange', 'four pineapple']
re.splitで正規表現分割
import re
str1 = 'apple1banana2orange'
# 0から9のいずれかに当てはまったら分割する
print(re.split('[0-9]', str1))
# ['apple', 'banana', 'orange']
文字列の置換
replaceメソッド
最も一般的な置換方法です。文字列.replace(置換対象, 置換先, 置換回数) で使います。
str1 = 'I like apple'
print(str1.replace('apple', 'banana'))
# I like banana
置換回数も指定できます。
str1 = 'I like apple, apple and apple'
print(str1.replace('apple', 'banana', 2))
# I like banana, banana and apple
re.subで正規表現置換
import re
str1 = 'I like apple, apple and apple'
print(re.sub('apple', 'banana', str1, 2))
# I like banana, banana and apple
translateメソッドで文字の置換
複数の文字をまとめて置換するには translate と maketrans の合わせ技が便利です。
str1 = 'I like apple'
print(str1.translate(str.maketrans({'a': 'A'})))
# I like Apple
まとめ
| 操作 | 方法 |
|---|---|
| 変数の埋め込み | f-string(3.6以上・推奨)、format |
| 改行なし出力 | print(~, end='') |
| リストの連結 | '区切り文字'.join(リスト) |
| 分割 | split / rsplit / splitlines / re.split |
| 置換 | replace / re.sub / translate |
公式ドキュメント: 文字列メソッド / re — 正規表現操作
リスト・辞書などのデータ型はPythonのデータ型まとめも参考にしてください。