Pythonの文字列操作について、簡単なようで意外と忘れている部分も多かったので、以下に整理してみました。
1.文字列の連結、および繰り返し
① 「+」での連結
変数aとbにセットされる文字列は、”+”演算子で連結可能です。
a = "Hello "
b = "World!"
c = a + b
print(c)↓↓↓
【実行結果】
Hello World!因みに、print命令の中で変数を+で連結する事も可能です。
以下の場合も、同様に”Hello World!”が出力されます。
a = "Hello "
b = "World!"
print(a + b)
# 同じく"Hello World!"が出力② 「*」での繰り返し連結
文字列の後に「* 数字」を書くと、*の直前の文字列を、数字分繰り返します。
ついでに改行コードも含めて実行してみましょう。
a = "Hello " * 3 + "\n"
b = "World! " * 4
c = a + b
print(c)↓↓↓
【実行結果】
Hello Hello Hello
World! World! World! World!
2.ブラケットを使って必要な文字だけ取り出す
ブラケット[]を使うと、1つの文字列の中から特定の文字を抽出することが可能です。
ブラケットによる文字列の抽出は、以下のパターンがあります。
ブラケットによる文字列の抽出
・[x] ⇒ x番目の文字を抽出
・[x:] ⇒ x番目から末尾までの文字列を抽出
・[:x] ⇒ 先頭からx-1番目までの文字列を抽出
・[x:y] ⇒ x番目からy-1番目までの文字列を抽出
・[x:y:z] ⇒ x番目からy-1番目までの文字列を、z字毎に抽出
(※ ‘x’、’y’は0から換算することに注意してください。”Hello”の場合、’H’は0番目の文字となります。)
① [x] ⇒ x番目の文字を抽出
str = "Hello World!"
# []で1文字抽出
print("1番目を抽出:" + str[1])
print("6番目を抽出:" + str[6])↓↓↓
【実行結果】
1番目を抽出:e
6番目を抽出:W② [x:] ⇒ x番目から末尾までの文字列を抽出
str = "Hello World!"
# [x:]で指定した位置から末尾までの文字を抽出
print("指定なし:" + str[:])
print("6番目以降を抽出:" + str[6:])
print("右端-3番目以降を抽出:" + str[-3:])↓↓↓
【実行結果】
指定なし:Hello World!
6番目以降を抽出:World!
右端-3番目以降を抽出:ld![-x:]のように、マイナス値を指定した場合、右端からx文字目に位置づけし、そこから末尾までを抽出します。
③ [:x] ⇒ 先頭からx-1番目までの文字列を抽出
str = "Hello World!"
# [:x]で先頭からx-1までの文字を抽出
print("先頭から0文字分抽出:" + str[:0])
print("先頭から2番目まで抽出:" + str[:3])
print("末尾から-3文字分を除いて抽出:" + str[:-3])↓↓↓
【実行結果】
先頭から0文字分抽出:
先頭から2番目まで抽出:Hel
末尾から-3文字分を除いて抽出:Hello Wor[:0]とした場合、0-1でマイナス値となってしまうため、何も抽出されません。
[:-x]とした場合は、末尾からx文字分を除いた形で、先頭からの文字列が抽出されます。
④ [x:y] ⇒ x番目からy-1番目までの文字列を抽出
str = "Hello World!"
# [x:y]でx番目からy-1番目までの文字列を抽出
print("先頭から4番目まで抽出:" + str[:5])
print("3番目から8番目まで抽出:" + str[3:8])
print("1番目を先頭に、末尾から4文字目まで抽出:" + str[1:-4])↓↓↓
【実行結果】
先頭から4番目まで抽出:Hello
3番目から8番目まで抽出:lo Wo
1番目を先頭に、末尾から4文字目まで抽出:ello Wo⑤ [x:y:z] ⇒ x番目からy-1番目までの文字列を、z字毎に抽出
str = "Hello World!"
# [x:y:z]でx番目からy-1番目までの文字列を、z字毎に抽出
print("全ての文字を2文字毎に抽出:" + str[::2])
print("2番目から7番目までの文字を1文字毎(全て)抽出:" + str[2:8:1])
print("3番目を先頭に、末尾2文字を除いて2文字毎に抽出:" + str[3:-2:2]) ↓↓↓
【実行結果】
全ての文字を2文字毎に抽出:HloWrd
2番目から7番目までの文字を1文字毎(全て)抽出:llo Wo
3番目を先頭に、末尾2文字を除いて2文字毎に抽出:l ol以上が、ブラケットを使った文字列の抽出パターンとなります。
3.文字列長の算出、及び文字列の分割、結合、置換を行う
① 文字列長の算出(len()関数)
len()関数を使用すると、文字列の文字数を返します。
下記の例では、変数strに”Hello World!”をセットし、その文字数である”12″をstrlenに返します。
str = "Hello World!"
strlen = len(str)
print(strlen)↓↓↓
【実行結果】
12② 文字列を任意の文字で区切る(split()メソッド)
split()メソッドを使用すると、文字列内に含まれる任意の文字で文字列全体を区切ることができます。
下記の例では、変数strに”Hello World!”をセットし、その文字列を”o”で区切った結果をリストstrlstに返します。
str = "Hello World!"
strlst = str.split("o")
print(strlst)
print(strlst[0])
print(strlst[1])
print(strlst[2])↓↓↓
【実行結果】
['Hell', ' W', 'rld!']
Hell
W
rld!分割した文字列を格納したリストについては、上記の通り、位置を指定して各要素毎に取り出すことも可能です。
③ 分割したリスト内の文字列を1つの文字列にまとめる(join()メソッド)
join()メソッドを使用すると、リスト内の複数の要素を一つの文字列にまとめることができます。
「間に挟む文字.join(リスト)」の形で処理することで、連結させることが可能です。
strlist = ["Hello ","World","!!!"]
joinstr1 = "-".join(strlist)
joinstr2 = "".join(strlist)
print(joinstr1)
print(joinstr2)↓↓↓
【実行結果】
Hello -World-!!!
Hello World!!!「”-“.join(strlist)」とすると、間に”-“(ハイフン)を挟んだ状態でリストの要素を一つの文字列にまとめます。
「””.join(strlist)」のように、間に挟む文字を無しにすると、何も挟まず、単純にリストの要素を一つの文字列にまとめる形になります。
④ 文字列の一部を置き換える(replace()メソッド)
replace()メソッドを使用すると、指定した文字列を別の文字列に置換することができます。
「対象文字列.replace(書き換える文字列、書き換え後の文字列、書き換える回数)」の形で処理することで、文字列の置換処理が可能となります。
str1 = "Hello World!"
strchg1 = str1.replace("World", "Japan")
print(strchg1)
str2 = "Hello Hello Hello!"
strchg2 = str2.replace("Hello", "Bye", 2)
print(strchg2)↓↓↓
【実行結果】
Hello Japan!
Bye Bye Hello!書き換える回数を指定しない場合、初回に見つけた対象文字列のみを置換します。
書き換える回数を指定した場合は、指定した回数分のみ、対象文字列を置換します。
ちなみに、存在する対象文字列の数より多めに回数を指定しておくと、文字列内の対象部分を、あるだけ全て置換して処理が終了します。
⑤ 文字列の埋め込みを行う(format()メソッド)
format()メソッドを使用すると、文字列に中に別の文字を持ってきて、任意の位置に埋め込むことができます。
プログラム中で動的に文字列作成を行いたいときに便利です。
「文字列{}文字列.format(埋め込む文字列)」の形で処理することで、文字列の埋め込み処理が可能となります。
なお、文字列の埋め込みについては、複数でもOKです。
str1 = "今日"
str2 = "1月1日"
strformat = "{}は{}です。".format(str1, str2)
print(strformat)
strformat = "{1}は{0}です。".format(str1, str2)
print(strformat)↓↓↓
【実行結果】
今日は1月1日です。
1月1日は今日です。このように、{}の並び順に対応して、format()メソッドの引数を埋め込んでいく形です。
書き換える回数を指定した場合は、指定した回数分のみ、対象文字列を置換します。
ちなみに、上記例の通り、{}の中に0~の番号を入力する事で、引数の埋め込む順番を指定することも可能です。
まとめ
今回は、Pythonでの基本的な文字列操作方法をまとめました。
こうした文字列操作方法って、簡単なようで意外と細かい部分を忘れてしまうんですよね。
因みに、これ以外にも便利な文字列操作方法がいくつかあるのですが、記事が長くなるので次回記事で改めてまとめます。
(今回はここまで)
お読みいただき、有難うございました!



コメント