こんにちは、ツバサです。複数の文字列を一気に置換する方法に悩んだのでその方法を備忘録として残します。
やりたかったこと
スクレイピングで取得した日付の文字列が’2022年12月24日’だったのを’2022-12-24’に変換したかった。
datetime使えば可能では?と思い簡単に調べましたが、’2022-12-2’4や’2022/12/24’から変換する方法しか出てこなかったので今回の方法を取ってみました。
ちゃんと調べればdatetimeを使った方法はあるかもしれません。
方法:str.translate関数を使う
実際のプログラムは下記の通りです。
# 置換前の文字列
a = '2022年12月24日'
print(a) # 2022年12月24日
# 1.置換表を作る
table = str.maketrans('年月','--','日')
# 2.置換する
b = a.translate(table)
print(b) # 2022-12-24
以下で解説をしていきます。
1. 置換表を作る
要ははAをBに、cをdに置換する、みたいな対応表を作ります。
作成にはstr.maketrans関数を使用します。プログラムの5行目ですね。
# 1.置換表を作る
table = str.maketrans('年月','--','日')
第一引数に置換したい文字を連結して書きます。ここでは「年」と「月」を置換したいので’年月’が第一引数です。
注意点は、「年月」を置換すると言うことではなく、「年」と「月」を置換します。
第二引数に置換後の文字列を書きます。書き方は第一引数の時と同じです。
今回は「年」も「月」も「-」にするので’–‘が第二引数です。
第三引数には削除したい文字列を(あれば)入力します。今回は最後の「日」が該当します。
2. 置換する
置換表ができたら実際に置換します。
書き方は、置換したい文字列.translate(置換表) のイメージです。
# 2.置換する
b = a.translate(table)
最後に
今回調べてtranslate関数の存在を知りました。引数の使い方に少しクセありな感じがしますが分かれば使うのは簡単です。
実は最初replace関数でやろうとして上手くいかなかった経緯があります。replace関数についてもちゃんと知る必要があることが分かったのでそっちもそのうちまとめたい・・・
以上、最後までご覧いただきありがとうございました。
コメント