Pythonで文字列のエスケープシーケンスを処理・解除する2つの方法
Pythonでエスケープシーケンスを処理する2つの方法
Pythonでバックスラッシュによるエスケープが含まれた文字列を、実際の制御文字(改行など)に変換して表示する(アンエスケープする)には、主に2つの方法があります。
方法1:ast.literal_eval を使う
1つ目は、ast.literal_eval を使って文字列を評価する方法です。この方法では、対象の文字列をさらに一重の引用符で囲む必要がある点に注意してください。
>>> import ast >>> a = '"Hello,\\nworld"' >>> print(ast.literal_eval(a)) Hello, world
literal_eval は文字列リテラルとして安全に評価してくれるため、\n が改行コードとして正しく解釈されます。外部からの入力を扱う場合でも比較的安全に使えるのが利点です。
方法2:decode('string_escape') を使う
もう1つの方法は、文字列クラスの decode('string_escape') メソッドを使うことです。
>>> print "Hello,\\nworld".decode('string_escape')
Hello,
world
なお、'string_escape' コーデックはPython 2専用の機能で、Python 3では削除されています。Python 3環境では、代わりに bytes 型に対して decode('unicode_escape') を使う方法が一般的です。
>>> b'Hello,\\nworld'.decode('unicode_escape')
'Hello,\nworld'
まとめ
単純なケースでは decode('string_escape')(Python 2)や unicode_escape(Python 3)が手軽ですが、入力内容が信頼できない場合や安全性を重視する場合は、ast.literal_eval の使用を検討するとよいでしょう。
-
Pythonで文字列の先頭の空白(スペース・タブ・改行)をすべて削除する方法
lstrip()メソッドで先頭の空白を削除するPythonで文字列の先頭にある空白文字(半角スペース、タブ、改行など)をすべて削除したい場合は、lstrip()メソッドを使用します。引数を指定しないで呼び出すと、文字列の先頭に連続するすべての空白文字が取り除かれます。>>> hello world!.lstrip() hello world!このように、インデントや改行コードなどで汚れた文字列の先頭を簡単にきれいにすることができます。strip()メソッドで両端の空白を同時に削除する文字列の先頭と末尾(両端)の空白を一度に削除したい場合は、strip()メソッドが便
-
Pythonで文字列が英数字のみかどうかを判定する方法【isalnum()と正規表現】
Pythonでは、文字列が英数字(アルファベットと数字)のみで構成されているかどうかを簡単に判定できます。主な方法は2つあります。文字列クラスに組み込まれている isalnum() メソッドを使う方法と、正規表現を使う方法です。 isalnum()メソッドを使う方法 Pythonの文字列クラスには isalnum() というメソッドが用意されています。このメソッドを文字列に対して呼び出すと、文字列が英数字のみで構成されている場合に True を、記号などが含まれる場合には False を返します。 >>> 123abc.isalnum() True >>>