通常の文字と同じようにreplace関数を使用しようとしても失敗する
最近とあることをpythonで行いたくて奮闘しております。
プログラミングは、途方もない実行→失敗→原因調査の繰り返しです。今回、プロにとっては基本的なことかもしれませんが、あれこれ試してやっと解決した「\」(バックスラッシュ)のreplace関数を使った文字の置き換えができない問題について紹介したいと思います。
Pythonのreplace関数は、引数で指定した文字を他の文字に置き換えることができます。
例えば、
test_1 = 'abc'
test_2 = test_1.replace('b', 'x')
print(test_2)
のアウトプットは
axc
となります。
ところが、
test_1 = 'a\c'
test_2 = test_1.replace('\', 'x')
print(test_2)
としても、SyntaxError: invalid syntaxというエラーが出て、実行が成功しません。
Pythonでバックスラッシュは特別扱い
Pythonにおいて、文字列内でバックスラッシュを扱う場合、バックスラッシュはエスケープ文字として解釈されます。つまり、\の後に続く文字が特別な意味を持つ文字として扱われます。例えば、\nは改行文字を表し、\tはタブ文字を表します。
従って、次のプログラムでは「\c」ひとまとまりの文字として扱われますが、「\c」で定義される文字がpythonにはないためエラーとなるのです。
test_1 = 'a\c'
test_2 = test_1.replace('\', 'x')
print(test_2)
バックスラッシュを置き換えるには「\」を引数にする
このようなバックスラッシュの特性は、replace関数の引数を「\\」(2文字のバックスラッシュ)としてあげれば回避できます。
つまり
test_1 = 'a\c'
test_2 = test_1.replace('\\', 'x')
print(test_2)
とすれば、実行結果は
axc
となります。
ちなみに僕はこの問題の解決方法に辿り着くのに数時間かかりました。。
おまけ:おすすめの本紹介
蛇足ですが、なんとかして労働の檻から脱出したい僕がこれまで感銘を受けた本を紹介します。
金持ち父さん 貧乏父さん
マイホーム購入について一旦僕に待ったをかけてくれた本です。この本では資産と負債の違いを端的に分かりやすく説明していて、労働から脱出するためにはいかにお金に働いてもらうか(=資産を増やしていけるか)が重要であると説いています。お金の扱い方の基本を勉強する上でも役に立ち、いつか我が子にも読ませたい良書です。
コメント