2017-09-26 23 views
1

興味深い問題があります。PythonのUnicode文字列からASCIIへの変換2.7

私は変数に渡されるUnicode文字列を取得しており、それを通常のASCII文字列に変換したいと思います。

私はPython2.7でこれを行う方法を理解できないようです。

のpython3

で、次の作品
rawdata = '\u003c!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"\u003e' 
b = bytearray() 
b.extend(map(ord, rawdata)) 
c = ''.join(chr(i) for i in b) 

私はprint(c)を呼び出すと、私は素敵な、きれいな出力を得る:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

をしかし、私はPython2.7でこれを呼び出すとき、それはまだですUnicodeエスケープ文字を印刷します(基本的にrawdata変数を再度印刷します)。

私は間違っていますか?私が作っていない簡単な呼び出しがなければならない。

答えて

0

を次の操作を実行することで、あなたは正確に何をしたいんれ、Unidecodeを使用する必要があります。

>>> from unidecode import unidecode 
>>> unidecode(u'ko\u017eu\u0161\u010dek') 
'kozuscek' 
>>> unidecode(u'30 \U0001d5c4\U0001d5c6/\U0001d5c1') 
'30 km/h' 
>>> unidecode(u"\u5317\u4EB0") 
'Bei Jing ' 
+0

ハードで作成されたユニコード文字列ではなく、どのように変数でこれを行うのですか?それはこれと私の闘いでした。 – jasonmclose

0

私はこれを投稿してから2分後に答えを見つけました。

答えは両方のバージョンでよりよいポータビリティのためのPython 2.7

rawdata = '\u003c!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"\u003e' 
asciistr = rawdata.decode("raw_unicode_escape") 
print asciistr 
関連する問題