1. ホーム
  2. python

[解決済み] Pythonで文字列中のエスケープシーケンスを処理する

2022-06-18 16:09:16

質問

ファイルやユーザから入力を受ける際、エスケープシーケンスが含まれた文字列を受け取ることがあります。エスケープシーケンスを処理したいのですが を、Pythonが文字列リテラル内のエスケープシーケンスを処理するのと同じ方法で処理したいのです。 .

例えば、次のようにします。 myString は次のように定義されます。

>>> myString = "spam\\neggs"
>>> print(myString)
spam\neggs

関数(ここでは process と呼ぶことにします)が欲しいです。

>>> print(process(myString))
spam
eggs

この関数がPythonのすべてのエスケープシーケンスを処理できることが重要です(上のリンクの表に記載)。

Pythonにこれを行うための関数はありますか?

どのように解決するのですか?

正しいのは、「string-escape」コードを使って文字列をデコードすることです。

>>> 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は使わないでください。文字列コーデックを使う方がよっぽど安全です。