将基于十进制的& #code转换为unicode

时间:2018-06-13 16:49:22

标签: python-3.x unicode

在python 3中,我有像

这样的JSON字符串
{
  "tag" : "مو",
  "id" : 1
}

我使用json.loads方法,但它没有转换 如何将其转换为Unicode字符串并使用它。

1 个答案:

答案 0 :(得分:1)

您可以使用正则表达式匹配HTML实体,并将其替换为Unicode字符:

import json
import re

raw_data = '''\
{
  "tag" : "مو",
  "id" : 1
}
'''

data = json.loads(raw_data)
data['tag'] = re.sub(r'&#(\d+);',lambda m: chr(int(m.group(1))),data['tag'])
print(data)

输出:

{'tag': 'مو', 'id': 1}

如果可能的话,更好的解决方案是正确地编写JSON,它可以是:

option1 = json.dumps(data)
option2 = json.dumps(data, ensure_ascii=False)
print(option1)
print(option2)

输出:

{"tag": "\u0645\u0648", "id": 1}
{"tag": "مو", "id": 1}