在python中将字符串'\u05d9\u05d7\u05e4\u05d9\u05dd'转换为其unicode字符

2024-06-28 10:54:36 发布

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

Json对象的值来自上面的一个Json对象: 标题:'\u05d9\u05d7\u05e4\u05d9\u05dd'

我需要将这些值打印为可读的文本,但是我不能转换它们,因为它们被当作文本字符串而不是unicode对象。在

unicode(myStr)不起作用
a = u'%s' % myStr不起作用

所有的都以字符串形式转义,因此返回相同的字符序列。 有人知道我如何用python进行转换吗?在

也许正确的方法是更改响应的编码,我该怎么做呢?在


Tags: 对象方法字符串文本json标题unicode序列
3条回答

您应该使用json模块将JSON数据加载到Python对象中。它将为您处理这个问题,并且您将有Unicode字符串。然后你可以对它们进行编码以匹配你的输出设备,然后打印出来。在

json字符串总是使用",而不是',因此'\u05d9\u05d7\u05e4\u05d9\u05dd'不是json字符串。在

如果加载一个有效的json文本,那么其中的所有Python字符串都是Unicode,因此不需要解码任何内容。要显示它们,您可能需要使用适合终端的字符编码对它们进行编码。在

Example

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import json

d = json.loads(u'''{"title": "\u05d9\u05d7\u05e4\u05d9\u05dd"}''')
print d['title'].encode('utf-8') # -> יחפים

注:源编码(在第一行中指定)与输出编码(最后一行)相等是巧合,它们是不相关的,可以是不同的。在

如果您希望在json文本中看到更少的\uxxxx序列,那么可以使用ensure_ascii=False

Example

^{pr2}$

输出

["\u05d9\u05d7\u05e4\u05d9\u05dd"]
["יחפים"]

如果出于某种原因在JSON对象之外有这样一个字符串,可以使用raw_unicode_escape对该字符串进行解码,以获得所需的unicode字符串:

>>> '\u05d9\u05d7\u05e4\u05d9\u05dd'.decode('raw_unicode_escape')
u'\u05d9\u05d7\u05e4\u05d9\u05dd'
>>> print '\u05d9\u05d7\u05e4\u05d9\u05dd'.decode('raw_unicode_escape')
יחפים

相关问题 更多 >