2017-06-25 43 views
3
>>> test 
u'"Hello," he\u200b said\u200f\u200e.\n\t"I\u200b am\u200b nine years old\xe2"' 
>>> test2 
'"Hello," he\\u200b said\\u200f\\u200e.\n\t"I\\u200b am\\u200b nine years old"' 
>>> print test 
"Hello," he said‏‎. 
     "I am nine years oldâ" 
>>> print test2 
"Hello," he\u200b said\u200f\u200e. 
     "I\u200b am\u200b nine years old" 

どのように私はtest2からテストに変換しますか(つまり、ユニコード文字が印刷されるように)? .decode('utf-8')はしません。Python2.xのUnicode文字列からエスケープ文字(エスケープ文字のUnicode文字)を削除するには?

答えて

3

を使用して、'\\u200b'u'\u200b'をデコードすることができます。

>>> test1 = u'"Hello," he\u200b said\u200f\u200e.\n\t"I\u200b am\u200b nine years old\xe2"' 
>>> test2 = '"Hello," he\\u200b said\\u200f\\u200e.\n\t"I\\u200b am\\u200b nine years old"' 
>>> test2.decode('unicode-escape') 
u'"Hello," he\u200b said\u200f\u200e.\n\t"I\u200b am\u200b nine years old"' 
>>> print test2.decode('unicode-escape') 
"Hello," he​ said‏‎. 
    "I​ am​ nine years old" 

注:しかし、たとえそれで、test2u'\xe2'がちょうど終了引用符(")前test1にありますので、正確にtest1に一致するように復号することができません。

>>> test1 == test2.decode('unicode-escape') 
False 
>>> test1.replace(u'\xe2', '') == test2.decode('unicode-escape') 
True 
+0

エスケープされたユニコード文字が次に印刷されますか?この例のものがゼロスペーススペースであるとすれば、私は本当に分かりません。それはユニコードではないので、私は '\ xe2'は印刷できないと思いますか? – kawakaze

+0

@ kawakaze、 'u '\ xe2''は'ラテン小文字のCIRCUMFLEX'です。 'unicodedata.name(u '\ xe2')を使って確認できます。 – falsetru

+0

ありがとうございました! – kawakaze

関連する問題