文字列の置換と削除
プログラミングで文字列を扱う時、文字列の一部を置き換えるという処理をよく実行します。
文字列オブジェクトの持つreplase()メソッドを使うと、文字列の一部を別の文字列に置き換え、置換することができます。
【例】
orig_str = “こんにちは”
orig_str.replase(“こ”, “あ”)
↓
あんにちは
replase()メソッドを呼ぶと、文字列を置換した結果が新しい文字列になって返ってきます。
メソット呼び出しに使った文字列オブジェクトは変更されません。※文字列は変更不可能なデータ型
replase()メソッドは、2番めの引数に空の文字列を渡せば、文字の削除にも使えます。
指定した文字列が空の文字列に置き換わり、結果として削除されます。
例えば、3桁ごとにカンマの入った整数相当の文字列を、数値として扱う場合、単純に文字列を数値に変換するなら
組み込み関数のint()を使えます。しかし、カンマのような記号が入ると、int()関数がエラーを起こしてしまいます。
事前に、replase()メソッドを使って、不要な文字列を取り除くようにし、その上でint()関数で数値に変換すれば良いです。
【例】
str_num = “1,000,000”
num = int(str_num.replase(“,” , “”))
num
↓
1000000
split()メソッド
split()メソッドを使うと、文字列を特定の文字を目安にして分割できます。
タブや、スペースのような空白文字列や、カンマで分割された長い文字列を、細かい文字列に分割するのにsplit()メソッドを使います。
Excelのような表計算ソフトでは、表の内容をタブで区切る形式で書き出せます。
また、インターネットからダウンロードできるデータも、似たような形式で配布されていることがあります。
このようなデータをPythonに取り込んで処理する時split()メソッドを使います。
split()メソッドは、分割に利用する区切り文字列を引数をして渡して、結果を文字列のリストとして返します。
なお、Excelなどの表計算ソフトが書き出すCSV形式のファイルは、フォーマットが複雑でsplit()メソッドでは扱いづらいです。
join()メソッド
join()メソッドを使うと、split()メソッドと逆の処理を行えます。
join()メソッドは、文字列を要素として持つリストを引数にとって、リストの文字列を連結してた文字列で取得することができます。
連結の時、間に挟む連結文字列を使ってjoin()メソッドを呼び出します。
例えば、空白で区切られた数値相当の文字列を、カンマで区切る形式に変換したいとします。
split()とjoin()を組み合わせると次のように書けます。
【例】
str_speeds = “38 42 20 40 39”
speeds = str_speeds.split()
csep_speeds = “,”.join(speeds)
csep_speeds
↓
38,42,20,40,39
空白にカンマを置き換えるだけなら、文字列型のreplase()メソッドを使って[str_speeds.replase(“ “ , “,”)]
と書けますが、split()とjoin()を組み合わせる方法には、replase()メソッドが持たない利点があります。
split()メソッドは、分割しようとする文字列の前後に不要な空白があったり、間のスペースが複雑だったりしても
上手に要素を分割してくれます。
replase()を使った場合とsplit()とjoin()を使った場合の比較
【replase()の場合】
str_speed2 = “ 38 42 20 40 39 “
str_speed2.replase(“ “, “,”)
↓
,38,42,20,40,39,
【split()とjoin()の場合】
str_speed2 = “ 38 42 20 40 39 “
speed2 = str_speed2.split()
csep_speed2 = “,”.join(speed2)
↓
38,42,20,40,39
手入力したデータなどでは、この例のような余分な空白が入りがちです。
このようなデータをに扱うためには、split()とjoin()を使うと便利です。