目次(まとめ)

  • ◾️ replaceメソッドを使って、任意の文字列を置き換える


Pythonを使ってプログラミングしているんだけど、与えられた文字列の中で置き換えたい文字があります。どうやったら文字の置換をすることができますか?

文字列の置換は、"replace" メソッドを使用することで可能です。

今回の記事では、テキストファイルを読み込んで、文字列を置き換える方法を紹介します。

replaceメソッドを使って、任意の文字列を置き換える

ここでは、以下のようなテキストファイル(input.txt)をPythonで読み込むことを考えます。

Nothing in life is to be feared. It is only to be understood.

これを読み込んで標準出力するPythonのスクリプトは、以下のような例(sample-1.py)になります。

# sample-1.py

infile = open("input.txt", "r")   # テキストファイル "input.txt" を、読み込み (read) モードで開いています

for line in infile:   # 読み込みモードで開いたファイルを、1行ずつ読み込んでいく繰り返し文です
   print(line)

infile.close()   # 開いていたファイルを閉じる

これをターミナル上などで実行すると、以下のように出力されます

$ python temp.py
Nothing in life is to be feared. It is only to be understood.

ちなみに、"Nothing in life is to be feared. It is only to be understood." とは、放射能の研究でノーベル物理学賞(1903年)、ラジウム関連の研究でノーベル化学賞(1911年)を受賞したマリ・キュリーが残した言葉です。

意味としては、"人生において恐れるべきことはない。ただ理解すべきことがあるだけ。" となります。

ここでは、"feared" という文字列を "felt sorrow"、"understood" という文字列を "enjoyed" に置き換えて、"人生で悲しみを感じることはありません。 楽しむだけです。" のような意味(Google翻訳)にしてみます。

Pythonでは、"replace" メソッドを使うことで文字列置換が可能です。

# sample-2.py

infile = open("input.txt", "r")   # テキストファイル "input.txt" を、読み込み (read) モードで開いています

for line in infile:   # 読み込みモードで開いたファイルを、1行ずつ読み込んでいく繰り返し文です
   line = line.replace("feared", "felt sorrow")
   line = line.replace("understood", "enjoyed")
   print(line)

infile.close()   # 開いていたファイルを閉じる

このスクリプトでは、まず、文字列の中で "feared" となっている箇所を "felt sorrow" に置き換えて、その後、"undetstood" となっている箇所を "enjoyed" で置き換えています。

実行すると、以下のようになります。

$ python temp.py
Nothing in life is to be felt sorrow. It is only to be enjoyed.

今回の記事では、キュリー夫人の言葉を題材にして、文字列を置き換えるメソッド "replace" を紹介しました。ちなみに、Rubyでは "gsub" メソッドをつかって同じような処理をすることができます(詳しくはこちらの記事をご参照ください)。

B!