2017-09-26 202 views
1

我有一個有趣的問題。將Unicode字符串轉換爲Python中的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

你如何做到這一點與變量,而不是一個硬創建的Unicode字符串?那是我與這個的鬥爭。 – 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 
相關問題