-
目次(まとめ)
- ◾️ 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" メソッドをつかって同じような処理をすることができます(詳しくはこちらの記事をご参照ください)。