将Unicode字符串转换为Python中的ASCII 2.7
问题描述:
我有一个有趣的问题。将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
变量)。
我在做什么错?有一个简单的电话,我不是在做。
答
以下为更好的便携性在两个版本中,你应该使用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 '
答
所以我在发帖之后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
你如何做到这一点与变量,而不是一个硬创建的Unicode字符串?那是我与这个的斗争。 – jasonmclose