文字列操作とは、文字列を結合・除去・分割することで目的の文字列となるように整形する操作全般の手続きのことを言う。代表的な操作は下記の通りである。また、文字列の生成に必要な記号の取り扱いについても紹介する。
- 文字列の結合
- 文字列の除去(削除)
- 文字列の分割
- 記号の取り扱い(エスケープシーケンス)
- 色々な文字列の定義
1. 結合
加算記号+を使用するやり方:数値の加算と同様の操作で文字列同士を結合可能。
# コード
str_1 = "寿限無"
str_2 = "五劫の擦り切れ"
str_comma = "、"
sentence_full_text_1 = str_1 + str_comma + str_1 + str_comma + str_2 + str_comma + r"..."
print(sentence_full_text_1)
# 実行結果
# >>> 寿限無、寿限無、五劫の擦り切れ、...
f-strings(f文字列)を使うやり方
# コード
str_3 = "海砂利水魚の"
str_4 = "水行末・雲来末・風来末"
sentence_full_text_2 = f"{str_3}{str_comma}{str_4}{str_comma}..." # このコードは下記のように記載しても良い
# sentence_full_text_2 = "{0}{1}{2}{3}...".format(str_3,str_comma,str_4,str_comma)
print(sentence_full_text_2)
# 実行結果
# >>> 海砂利水魚の、水行末・雲来末・風来末、...
join()を使用する方法:”結合文字”.join(結合したい文字列のリスト)
# コード
str_5 = "喰う寝る処に住む処"
str_6 = "藪ら柑子の藪柑子"
list_5_6 = [str_5, str_6, "..."]
sentence_full_text_3 = str_comma.join(list_5_6)
print(sentence_full_text_3)
# 実行結果
# >>> 喰う寝る処に住む処、藪ら柑子の藪柑子、...
2. 除去
replace()を使用した削除:文字列の置き換えを行う関数だが、置き換える文字を””(何も設定しない)とすることで、結果的に削除することができる。おすすめの方法。
# コード
str_7 = "aパイポbパイポbパイポのシューリンガンc"
str_7_a = str_7.replace("a","")
str_7_b = str_7_a.replace("b","・")
str_7_c = str_7_b.replace("c","、...")
sentence_full_text_4 = str_7_c
print(sentence_full_text_4)
# 実行結果
# >>> パイポ・パイポ・パイポのシューリンガン、...
スライスする:文字列をキャラクター(半角文字)を1文字ずつ格納した配列として、特定の要素のみを取り出すことで、削除した可能ようにする方法。
# コード
str_8 = "-+-シューリンガンのグーリンダイ+-+-"
str_8_pre3_suf4 = str_8[3:-4]
sentence_full_text_5 = str_8_pre3_suf4 + "、..."
print(sentence_full_text_5)
# 実行結果
# >>> シューリンガンのグーリンダイ、...
strip()を使用する方法:
# コード
str_9 = "googleグーリンダイのポンポコピーのポンポコナのgoogle"
str_9_google = str_9.strip('gole')
sentence_full_text_6 = str_9_google + "、..."
print(sentence_full_text_6)
# 実行結果
# >>> グーリンダイのポンポコピーのポンポコナの、...
その他にsub()を利用する方法もあるが、分かりづらいので説明はしない。また、removeprefix()やremovesuffix()といったものもあるが、これらはPython3.9以降のバージョンで対応したものであるので説明はしない。
3. 分割
sprit()を使用したやり方
# コード
str_10 = "長久命の長助,ー以上、寿限無"
str_10_comma = str_10.split(",")
sentence_full_text_7 = str_10_comma[0] + "\t" + str_10_comma[1]
print(sentence_full_text_7)
# 実行結果
# >>> 長久命の長助 ー以上、寿限無
4. 記号の取り扱い(エスケープシーケンス)
pythonスクリプトのコードとして使用される記号・特殊文字など、コードの処理に関わるような記号には、円マーク\(環境によってはバックスラッシュ)を付加することで、コードとして認識させないようにすることができる。
やりたいこと・できること | コードの書き方(エスケープシーケンス) | 備考 |
改行(行送り/LF) | \n | |
改行(復帰/CR) | \r | ターミナル出力上は\nと変わらない |
水平タブ(Tab) | \t | |
クォーテーション(‘) | \’ | str_tmp = “I’m serpent ” のようにも使用可 |
ダブルクオーテーション(“) | \” | str_tmp = ‘ ” mark is quotation’ のようにも使用可 |
円マーク(バックスラッシュ/\) | \\ | コード上でファイルパスを定義するときには注意 |
5. 色々な文字列の定義
文字列を定義する際のよく使うコーディング例は下記の通り。
やりたいこと・できること | コードの書き方(例) | 備考 |
文字列の定義 | strings_general = “this is a string!” | シングルクォーテーションでも可 |
文字列の定義(型を指定) | strings_general:str = “this is a string!” | |
文字列の定義(書いたままを代入する) | strings_raw_01 = r”C:\Users” | rをつけないと円マークでバグるかエラーとなる |
文字列に変数の中身を挿入 | data01 = 1.1 strings_in_val = f”data = {data01}” | |
文字列に変数の中身を挿入 | strings_ininin = “data01={0}\tdata02={1}”.format(data01,data02) | 基本的にはf””と同じ |
文字列に変数の中身を挿入 | data02 = 1.01370001 strings_ininin2 = “data02={0:.05f}”.format(data02) | 左の例は小数点以下5桁とする例。 >>> 1.01370 |
文字列に変数の中身を挿入 | strings_ininin3 = f”data02={data02:.03f}” | 左の例は小数点以下3桁とする例。四捨五入される。 >>> 1.014 |
※文字列に変数の中身を挿入する際に書式を整えることができるが、上記のような小数点の桁を調整する以外にも、数値の0埋めや整数値の桁数・桁位置合わせなどもできる。下記のリンクに比較的わかりやすくまとめられている。
https://www.javadrive.jp/python/string/index24.html
EOF