2017-12-07 24 views
0

一部のユニコード文字がエスケープされたデータを受信しました。python3:エスケープされていないエスケープ文字で囲まれたエスケープ文字

>>> example = r'сло\u0301во' 

これらの文字をエスケープするにはどうすればよいですか?以下の例では、関数unescapeはどのように見えますか?これを行う組み込み関数はありますか?

>>> unescape(example) 
сло́во 
+0

奇妙だ。つまり、 'r'сло\u0301во''と入力すると、Pythonインタプリタはそのエスケープを対応する文字に変換し、文字列には実際に'слово'が含まれます。あなたのコードページに応じて、*別の方法でそれを*コンソールに表示するかもしれません。 – roeland

答えて

0

このソリューションは、元の文字列で\uのすべてのインスタンスは、Unicodeエスケープであることを前提としています

def unescape(in_str): 
    """Unicode-unescape string with only some characters escaped.""" 
    in_str = in_str.encode('unicode-escape') # bytes with all chars escaped (the original escapes have the backslash escaped) 
    in_str = in_str.replace(b'\\\\u', b'\\u') # unescape the \ 
    in_str = in_str.decode('unicode-escape') # unescape unicode 
    return in_str 

...または1つのラインで...

def unescape(in_str): 
    """Unicode-unescape string with only some characters escaped.""" 
    return in_str.encode('unicode-escape').replace(b'\\\\u', b'\\u').decode('unicode-escape')