python2.7中Unicode字符串到ASCII的转换

2024-04-19 05:40:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我有个有趣的问题。在

我得到一个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),我会得到一个漂亮、干净的输出:

^{pr2}$

但当我在Python2.7中调用它时,它仍然在打印Unicode转义字符(实际上再次打印rawdata变量)。在

我做错什么了?一定有个简单的电话我不会打的。在


Tags: 字符串htmlasciiunicodepublicw3cdoctype作品
2条回答

所以我在贴了这个后2分钟就找到了答案。在

答案是在Python2.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

为了在两个版本上更好地移植,您应该使用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 '

相关问题 更多 >