プログラミング勉強の備忘録

主にpythonやスマホアプリを作るためのプログラミングで勉強した内容を忘れないように記載していきます。

【Python】文字操作

【はじめに】

今回はPythonでの文字操作についてのメモです。
内容は筆者が過去にVBAで使用していたものになっています。

<実施環境>

【コードと説明】

<一覧>

今回のコード一覧です。

コード 説明
ワード1 + ワード2 ワード1とワード2がつなげる
接続文字.join(ワード(リスト)) 接続文字を間に入れてリスト内の文字をつなげる
"ワード".split(区切り文字, 分割数) 区切り文字でワードを左から分割数だけ分割
ワード.rsplit(区切り文字, 分割数) 区切り文字でワードを右から分割数だけ分割
ワード.sprit(削除文字) 削除文字を両端から削除
ワード.lsprit(削除文字) 削除文字を左端から削除
ワード.rsprit(削除文字) 削除文字を右端から削除
ワード[n-1] ワードの n 文字目を取得
ワード[n-1:n-1+m] ワードの n 文字目から m 文字を取得
ワード.replace(変換前, 変換後, 変換する個数) ワードの変換前の文字を変換後の文字に個数分、左から置換する
ワード.find(検索ワード, 検索位置) 左から検索を始め、検索位置から右側の検索ワードの開始位置を取得
ワード.rfind(検索ワード) 左から検索を始め、検索ワードの開始位置を取得

<文字の結合>

# ワード1 + ワード2
# 接続文字.join(ワード(リスト))
wordlist = ['a', 'b', 'c', 'd', 'e']
print('a' + 'b')                        # => ab
print("_".join(wordlist))               # => a_b_c_d_e

<文字の分割>

# ワード.split(区切り文字, 分割数)
# ワード.rsplit(区切り文字, 分割数)
word = "This is a pen."
s = "a_b_c_d_e"
print(word.split())             # => ['This', 'is', 'a', 'pen.']
print(s.split("_"))             # => ['a', 'b', 'c', 'd', 'e']
print(s.split("_", 3))          # => ['a', 'b', 'c', 'd_e']
print(s.rsplit("_", 2))         # => ['a_b_c', 'd', 'e']

区切り文字を省略すると「空白」で分割されます。
区切り数を省略すると全ての区切り文字の箇所で分割されます。
区切り数を指定する際は区切り文字の省略はできませんでした。
分割後は、リストとして出力されます。

<両端文字の削除>

# ワード.strip(削除文字)
# ワード.lstrip(削除文字)
# ワード.rstrip(削除文字)
word = " is "
s = "XXXAXXXAXXX"
print('This' + word.strip() + 'pen')        # => Thisispen
print('This' + word.lstrip() + 'pen')       # => Thisis pen
print('This' + word.rstrip() + 'pen')       # => This ispen
print(s.strip("X"))                         # => AXXXA
print(s.lstrip("X"))                        # => AXXXAXXX
print(s.rstrip("X"))                        # => XXXAXXXA

削除文字を省略すると「空白」が削除されます。
削除文字を指定すると左端/両端/右端のその文字が削除されます。

<文字の取得>

# ワード[n-1]
# ワード[n-1:n-1+m]
word = 'abcdef'
print(word[0])           #=>a
print(word[3])           #=>d
print(word[-1])          #=>f
print(word[-3])          #=>d
print(word[0:4])         #=>abcd
print(word[3:])          #=>def
print(word[-4:-1])       #=>cde
print(word[-2:])         #=>ef
print(word[:-4])         #=>ab

先頭の文字を0文字目とするため、n 文字目を取得するには n+1 の数値を入れる必要があります。
「-」を入れると後ろから何文字目を取得できます。この書き方では最後尾の文字が1になるため注意が必要です。
n 文字目から m 文字取得する書き方では[○:△]の時に、○文字目から△文字目未満をとってくるイメージです(先頭文字を0文字目として)。
△を省略すると、○文字目以降の文字全てを取得します。
○を省略すると、△文字目未満の文字を全て取得します。

<文字の置換>

# ワード.replace(変換前, 変換後, 変換する個数)
word = 'abcdef def'
print(word.replace('abc', 'aaa'))        # => aaadef def
print(word.replace('def', 'xyz'))        # => abcxyz xyz
print(word.replace('def', 'xyz', 1))     # => abcxyz def
print(word.replace('hif', 'xyz', 1))     # => abcdef def

変換する個数を省略すると対象を全て変換します。
変換対象がない場合は何もおきません。

<文字の検索>

# ワード.find(検索ワード, 検索位置)
# ワード.rfind(検索ワード) 後ろから検索
word = 'apple and ant'
print(word.find('a'))        # => 0
print(word.find('a', 1))     # => 6
print(word.find('f'))        # => -1
print(word.find('a', 11))    # => -1
print(word.rfind('a'))       # => 10

検索ワードがない場合には「-1」が返されます。

【後書き】

今回は簡単なPythonでの文字操作についてメモをしました。
Pythonでは他にもいろいろな文字操作方法がありそうですので、調べるたびにメモを増やしていきたいと思います。(多くなってきたら1つにまとめようと思います)

【参考サイト】

今回の作業にあたり、下記サイトを参考にさせて頂きました。
qiita.com