[Python] 文字列操作 まとめ

Index

1. 大文字 / 小文字変換

1.1 大文字にする

"Test".upper()
# TEST

1.2 小文字にする

"Test".lower()
# test

1.3 大文字と小文字を入れ替える

"Test".swapcase()
# tEST

1.4 文字列の先頭を大文字にする

s = "go to the mattresses"
s.capitalize()
# Go to the mattresses

1.5 単語の最初を大文字にする

s = "Go to the mattresses"
s.title()
# Go To The Mattresses

2. 文字列削除

2.1 先頭と末尾の指定文字列を削除する

str.lstrip([chars])

引数を省略もしくは、NULLの場合、文字列の先頭及び末尾部分の空白を削除した文字列を返す。
引数に文字列を指定した場合、空白の代わりにその文字列を削除する。

s = " Go to the mattresses  "
"A" + s.strip() + "A"
# AGo to the mattressesA

"A" + s.strip("Go") + "A"
# A to the mattressesA

2.2 文字列先頭の指定文字列を削除する

str.lstrip([chars])

strip() の文字列の先頭だけ削除するバージョン

s = " Go to the mattresses  "
"A" + s.lstrip() + "A"
# AGo to the mattresses  A

2.3 文字列末尾の指定文字列を削除する

str.rstrip([chars])

strip() の文字列の末尾だけ削除するバージョン

s = " Go to the mattresses  "
"A" + s.rstrip() + "A"
# A Go to the mattressesA

3. 文字列分割

3.1 左から複数分割する

str.split(sep=None, maxsplit=-1)

文字列を sep で分割したリストを返す。
maxsplit は、分割回数を表し、-1 ならすべて分割する。
sep が None の場合、空白文字を分割文字とし、空白文字が複数連続している場合は、それをひとつの分割文字列とする。

s = "ABC,  DEF,  GHI\nJKL"
s.split(",")
# ['ABC', '  DEF', '  GHI\nJKL']

s.split(",", 1)
# ['ABC', '  DEF,  GHI\nJKL']

s.split()
# ['ABC,', 'DEF,', 'GHI', 'JKL']

3.2 右から複数分割する

str.rsprit(sep=None, maxsplit=-1)

split() の右から分割するバージョン

3.3 左から複数分割する(正規表現)

re.split(正規表現, 文字列, maxsplit=0)

こちらの場合は、maxsplit が 0 の場合にすべて分割する。

import re
re.split(r'\W', "ABC,DEF$GHI#JKL")
# ['ABC', 'DEF', 'GHI', 'JKL']

3.4 左から2つに分割する

str.partition(sep)

文字列を左から sep で区切り、以下の内容の3要素のタプルを返す。
(区切った前方部, sep, 区切った後方部)

もし区切れなければ、以下のタプルを返す。
(文字列, 空文字列, 空文字列)

s = "ABC, DEF, GHI"
s.partition(",")
# ('ABC', ',', ' DEF, GHI')

s.partition("%")
# ('ABC, DEF, GHI', '', '')

3.5 右から2つに分割する

str.rpartition(sep)

partition() の右から区切るバージョン

3.6 改行で分割する

str.splitlines([keepends])

文字列を改行で分割し、リストを返す。
keepends に真を与えると、分割した文字列に改行を含める。

s = "ABC\nDEF\nGHI\n"

s.splitlines()
# ['ABC', 'DEF', 'GHI']

s.splitlines(True)
# ['ABC\n', 'DEF\n', 'GHI\n']

4. 置換

4.1 文字列を置換する

str.replace(old, new[, count])

文字列中にある old を new に置換する。
count を指定した場合、その数だけ置換される。

s = "Steven Spielberg"
s.replace("Spielberg", "Seagal")
# Steven Seagal

4.2 文字列を置換する(正規表現)

re.sub(pattern, repl, string, count=0)

string 中の pattern にマッチする文字列を repl に置換する。

import re

s = "Steven Allan Spielberg"
re.sub(r"(?<= )\w.*$", "Edwin King", s)
# Steven Edwin King

4.3 文字列を置換する(正規表現2)

re.subn(pattern, repl, string, count=0)

re.sub() と同じ操作を行うが、以下のタプルを返す。
(置換後文字列, 置換した数)

4.4 変換テーブルから文字列を変換する

s = "leet speak"

s.translate(str.maketrans('aet', '437'))
# l337 sp34k

5. 整形

5.1 左揃えにする

長さ width の左揃えした文字列を返す

str.ljust(width[, fillchar])
s = "test"

s.ljust(10) + "A"
# test      A

s.ljust(10, "X") + "A"
# testXXXXXXA

5.2 右揃えにする

rjust(width[, fillchar])

5.3 中央揃えにする

center(width[, fillchar])

参考