文字列処理メソッドのまとめ

python文字列の処理を行うことが多々あるので, よく使うメソッドをまとめてみました.

目次

  • 文字列の置換
    • replace() ・・・ 文字列を置換する
  • 文字列を含むかどうかの判定
    • 演算子"in" ・・・ 文字列を含むかどうかの判定する
    • startswith() ・・・ 始まりの文字列を判定する
    • endswith() ・・・ 終端の文字列を判定する
  • 文字列の位置の判定
    • find() ・・・ 文字列を探し, あった場合は, 最小のインデックスを返す. なければ-1を返す
    • rfind() ・・・ 文字列を探し, あった場合は, 最大のインデックスを返す. なければ-1を返す
    • index() ・・・ 文字列を探し, あった場合は, 最小のインデックスを返す. なければエラーを返す
    • rindex() ・・・ 文字列を探し, あった場合は, 最大のインデックスを返す. なければエラーを返す
  • 文字列の構成要素の判定
    • isalnum() ・・・ 文字がすべて英数文字かどうかの判定
    • isalpha() ・・・ 文字がすべて英字かどうかの判定
    • isdigit() ・・・ 文字がすべて数字かどうかの判定
    • islower() ・・・ 大小文字の区別がある文字がすべて小文字かどうかの判定
    • isspace() ・・・ 文字がすべて空白かどうかの判定
    • istitle() ・・・ 文字列がタイトルケースかどうかの判定
  • 大文字, 小文字の変換
    • capitalize() ・・・ 最初の文字のみを大文字にする
    • swapcase() ・・・ 大文字を小文字に, 小文字を大文字に変換する
    • title() ・・・ 文字列をタイトルケースにする
    • lower() ・・・ 文字をすべて小文字に変換する
    • upper() ・・・ 文字をすべて大文字に変換する
  • 文字列をリストに変換
    • split() ・・・ 指定したセパレーターをもとに文字列を区切り, リストを返す
    • rsplit() ・・・ 区切りはじめる方向がsplit()と逆
    • splitlines() ・・・ 改行ごとに文字列を区切り, リストを返す

文字列の置換


>>> # replace()
>>> "Hello world!".replace("Hello", "Goodbye")
'Goodbye world!'
>>> "Hello world!".replace(" world", "")
'Hello!'
            

文字列を含むかどうかの判定

後述するメソッド(find(), index(), etc...)を使っても判定することができますが, inを使うことが望ましいようです.


>>> # 演算子"in"
>>> "world" in "Hello world!"
True
>>> "word" in "Hello world!"
False

>>> # startswith()
>>> "Hello world!".startswith("Hello")
True
>>> "Hello world!".startswith("hello")
False

>>> # endswith()
>>> "Hello world!".endswith("world!")
True
>>> "Hello world!".endswith("world")
False
            

文字列の位置の判定


>>> # find()
>>> "apple apple apple".find("apple")
0
>>> "apple apple apple".find("orange")
-1

>>> # rfind()
>>> "apple apple apple".rfind("apple")
12
>>> "apple apple apple".rfind("orange")
-1

>>> # index()
>>> "apple apple apple".index("apple")
0
>>> "apple apple apple".index("orange")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: substring not found

>>> # rindex()
>>> "apple apple apple".rindex("apple")
12
>>> "apple apple apple".rindex("orange")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: substring not found
            

文字列の構成要素の判定


>>> # isalnum()
>>> "abc123".isalnum()
True
>>> "abc 123".isalnum()
False

>>> # isalpha()
>>> "abc123".isalpha()
False
>>> "abcABC".isalpha()
True

>>> # isdigit()
>>> "abc123".isdigit()
False
>>> "123456".isdigit()
True

>>> # islower()
>>> "abc123".islower()
True
>>> "abcABC".islower()
False
>>> "123456".islower()
False

>>> # isspace()
>>> "     ".isspace()
True
>>> "".isspace()
False
>>> "abc 123".isspace()
False

>>> # istitle()
>>> "Hello World!".istitle()
True
>>> "Hello world!".istitle()
False
            

大文字, 小文字の変換


>>> # capitalize()
>>> "hello world!".capitalize()
'Hello world!'

>>> # swapcase()
>>> "HELLO world!".swapcase()
'hello WORLD!'

>>> # title()
>>> "hello world!".title()
'Hello World!'

>>> # lower()
>>> "HELLO world!".lower()
'hello world!'

>>> # upper()
>>> "HELLO world!".upper()
'HELLO WORLD!'
            

文字列をリストに変換


>>> # split()
>>> "apple orange banana grape".split()
['apple', 'orange', 'banana', 'grape']
>>> "apple,orange,banana,grape".split(",")
['apple', 'orange', 'banana', 'grape']
>>> "apple,orange,banana,grape".split(",", 2)
['apple', 'orange', 'banana,grape']

>>> # rsplit()
>>> "apple orange banana grape".rsplit()
['apple', 'orange', 'banana', 'grape']
>>> "apple,orange,banana,grape".rsplit(",")
['apple', 'orange', 'banana', 'grape']
>>> "apple,orange,banana,grape".rsplit(",", 2)
['apple,orange', 'banana', 'grape']

>>> # splitlines()
>>> "apple orange banana grape".rsplit()
>>> "apple\norange\nbanana\ngrape".splitlines()
['apple', 'orange', 'banana', 'grape']