ファイルやユーザーからの入力を受け取ると、エスケープシーケンスを含む文字列が返されることがあります。エスケープシーケンスを処理したいのですがPythonが文字列リテラル内のエスケープシーケンスを処理するのと同じ方法。
たとえば、次myString
のように定義されているとします。
>>> myString = "spam\\neggs"
>>> print(myString)
spam\neggs
次のような機能を持つ関数 ( と呼びますprocess
) が必要です:
>>> print(process(myString))
spam
eggs
関数が Python のすべてのエスケープ シーケンス (上記のリンクの表にリストされています) を処理できることが重要です。
Python にはこれを行う関数がありますか?
ベストアンサー1
正しい方法は、「文字列エスケープ」コードを使用して文字列をデコードすることです。
>>> myString = "spam\\neggs"
>>> decoded_string = bytes(myString, "utf-8").decode("unicode_escape") # python3
>>> decoded_string = myString.decode('string_escape') # python2
>>> print(decoded_string)
spam
eggs
AST や eval は使用しないでください。文字列コーデックを使用する方がはるかに安全です。