Pythonの文字列操作まとめ。出力・連結・分割・置換の使い方

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メソッドで文字の置換

複数の文字をまとめて置換するには translatemaketrans の合わせ技が便利です。

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のデータ型まとめも参考にしてください。

技術ブログ一覧へ戻る