Pythonのtranslateを使った文字の置換
Python のtranslate
メソッドを使うとmaketrans
メソッドから生成される変換表を元に文字を置換できる。
- https://docs.python.org/ja/3/library/stdtypes.html?highlight=str%20replace#str.translate
- https://docs.python.org/ja/3/library/stdtypes.html?highlight=str%20replace#str.maketrans
適当な文字列を作成した。日本語の文章にカンマ、ピリオドなどが入っており、これを句読点に置き換えてみる。
greeting = ''' *** おはようございます,本日は下記を対応します. - 書類提出 - ドキュメント読み込み - サンプル作成 今日も、よろしくお願いいたします. ***
*** おはようございます、本日は下記を対応します。 ・ 書類提出 ・ ドキュメント読み込み ・ サンプル作成 今日も、よろしくお願いいたします。 ***
maketrans の第 3 引数にも指定する
文頭と文末に*が入っていて不要に見えるので、この置換作業の中で削除してみる。
maketrans
メソッドの 3 つ目の引数に指定して、削除されることも確認する。
greeting = ''' *** おはようございます,本日は下記を対応します. - 書類提出 - ドキュメント読み込み - サンプル作成 今日も、よろしくお願いいたします. *** ''' print(greeting.translate(str.maketrans('.,-','。、・','*')))
おはようございます、本日は下記を対応します。 ・ 書類提出 ・ ドキュメント読み込み ・ サンプル作成 今日も、よろしくお願いいたします。
maketrans の指定文字を片方の引数だけ増やしてみる
第 2 引数に#
を追加すると、第 1 引数との数が一致していないのでエラーになる。
greeting = ''' *** おはようございます,本日は下記を対応します. - 書類提出 - ドキュメント読み込み - サンプル作成 今日も、よろしくお願いいたします. *** ''' print(greeting.translate(str.maketrans('.,-', '。、・#', '*')))
1 greeting = ''' 2 *** 3 おはようございます,本日は下記を対応します. (...) 10 *** 11 ''' ---> 13 print(greeting.translate(str.maketrans('.,-', '。、・#', '*'))) ValueError: the first two maketrans arguments must have equal length