处理来自JSON响应的转义unicode字符

时间:2017-05-26 12:04:58

标签: python json python-2.7 unicode

我收到了像这样的位置名称列表

region_response = json.loads(requests.get(region_req_url).text)

许多名称在回复中都有Tor\u00f6 Stenstrand字符,其中地名为Torö Stenstrand

然后我将一些收到的元素添加到字典中并将其保存到新的JSON文件

with open('spots.json', 'w') as wf:
    json.dump(results, wf, skipkeys=False, ensure_ascii=True, indent=4)

生成的文件也有\u00f6之类的转义字符,但我需要这样才能得到像ö这样的实际表示形式。

到目前为止,我的工作位于this repo,特别是magicseaweed.pywindguru.py

如果之前已经回答了这个问题,或者上面的描述/假设是不正确的,请道歉 - 我现在已经尝试了很长一段时间,但我不认为我理解这个区域足以确切地知道我应该寻找什么或阅读!任何帮助/建议/指针都将受到广泛赞赏。

2 个答案:

答案 0 :(得分:1)

我曾使用io模块解决此问题,如下所示

import io
j = {'d': '中', 'e': 'a'}
with io.open('myfile.json', 'w', encoding='utf8') as json_file:
   json.dumps(j, json_file, ensure_ascii=False)

输出:

    {"d": "中", "e": "a"}'

答案 1 :(得分:0)

得到了这个工作:)首先我将编码添加到json.loads ...

response = requests.get(region_req_url)
response = requests.utils.get_unicode_from_response(response)
region_response = json.loads(response, encoding='utf-8')

然后在尝试了Sijan的上述答案后,我收到了错误(显示在评论中),当我尝试修复错误时遇到了add something to you application's app.manifest in the "compatibility" section,并且该解决方案已经有效。所以要写我的JSON文件,我正在做......

with io.open("results.json",'w', encoding="utf-8") as outfile:
    outfile.write(unicode(json.dumps(results, ensure_ascii=False, indent=4)))

现在,地名正在写入Torö Stenstrand等JSON文件。