嗨,我在Python中将utf-8 json转换成unicode escape json时遇到了一些问题
我知道如何将utf-8.txt转换为unicodeescape.txt
with open("input.txt", "r", encoding='utf8') as f:
text = f.read()
with open('output.txt', 'w', encoding='unicode-escape') as f:
f.write(text)
但是,我在Python中使用json模块时遇到了上面应用的问题,如下所示
with codecs.open(self.input,'r', encoding='utf-8') as json_file:
json_data = json.load(json_file)
with codecs.open(self.output,'w', encoding='unicode-escape') as json_file:
prepare_json = json.dumps(json_data, ensure_ascii=False)
json_file.write(prepare_json)
它保存得很好,但是,当涉及到json中的双引号(“)时,它会自动添加双反斜杠(\\),因此unicode-esc.json文件在调用python脚本时无法正常工作。
假设一下
1. Input file (UTF-8): {"context" : "-\" 너"}
我通过上面的第二个代码块转换它
2. Output file (UNICODE-ESCAPED) : {"context" : "-\\" \ub108"}
3. What I want (UNICODE-ESCAPED) : {"context" : "-\" \ub108"}
由于在双引号前面有双反斜杠,Python在加载unicode转义的json文件时会显示错误。
更多详细信息
输入文件:。/simple_test.json
{"context" : "-\" 너"}
with codecs.open('./simple_test.json', 'r', encoding='utf-8') as json_file:
json_data = json.load(json_file)
prepare_json = json.dumps(json_data, ensure_ascii=False)
prepare_json
>>> '{"context": "-\\" 너"}'
repr(prepare_json)
>>> '\'{"context": "-\\\\" 너"}\''
print(prepare_json)
>>> {"context": "-\" 너"}
所以它应该输出{“context”:“-”\ub108“},它只是{“上下文”:“–”너"}.
Output.json(I excpected}
{"context": "-\" \ub108"}
但是,使用下面的代码,我得到了
with codecs.open('./simple_test_out.json','w', encoding='unicode-escape') as json_file:
json_file.write(prepare_json)
Output.json
{"context": "-\\" \ub108"}
经过几次尝试,我发现这只有在写入编码=“unicode-转义”格式的文件时才会发生。并将原始字符串替换为奇数个反斜杠将不起作用。
任何建议或想法将不胜感激!
import codecs
import json
with codecs.open('./simple_test.json','r', encoding='utf-8') as json_file:
json_data = json.load(json_file)
with codecs.open('.=simple_test_out.json','w', encoding='utf-8') as json_file:
prepare_json = json.dumps(json_data, ensure_ascii=False)
json_file.write(prepare_json)
这只是工作正常。
import codecs
import json
with codecs.open('./simple_test.json','r', encoding='utf-8') as json_file:
json_data = json.load(json_file)
with codecs.open('.=simple_test_out.json','w', encoding='unicode-escape') as json_file:
prepare_json = json.dumps(json_data, ensure_ascii=False)
json_file.write(prepare_json)
但是这不行,这是我想要的格式
看起来您只是想要< code >确保_ascii=True(默认):
C:\>type input.json
{"context" : "-\" 너"}
C:\>py
Python 3.8.1 (tags/v3.8.1:1b293b6, Dec 18 2019, 23:11:46) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import json
>>> with open('input.json',encoding='utf8') as f:
... data = json.load(f)
...
>>> data
{'context': '-" 너'}
>>> with open('output.json','w',encoding='utf8') as f:
... json.dump(data,f)
...
>>> ^Z
C:\>type output.json
{"context": "-\" \ub108"}
问题内容: 我的数据采用以下格式:或类似。我想将它们转换为UTF-8(原始字符是好和我)。我该怎么做? 问题答案: 这可能是最简单的解决方案。
问题内容: 我需要将unicode字符串转换为具有以unicode编码的非ascii字符的字符串。例如,字符串“汉字Max”应显示为“ \ u6F22 \ u5B57 Max”。 我尝试过的 的不同组合 新的String(sourceString.getBytes(encoding1),encoding2) Apache StringEscapeUtils也会转义ascii字符,例如双引号 Str
我用的是美丽的汤。它给我一些超文本标记语言节点的文本,但是这些节点有一些Unicode字符,这些字符被转换为字符串中的转义序列。 例如,一个具有以下: 的 HTML 元素由美丽的汤检索,如:作为以下字符串:,这只能在 Python 控制台中读取。但是,当写入JSON文件时,它变得不可读。注意:我使用以下代码保存到 JSON 文件: 我如何将这些Unicode字符转换回UTF-8或任何使它们可读的东
我有一个oracle DB,根据我们的DB管理,没有设置格式,但是当我们将数据导出到文本文件时,它是以utf-8的形式出现的 谁能帮我把这些文本文件转换成Unicode码吗
问题内容: 我想将Intent的Extras Bundle转换为JSONObject,以便可以将其传递给JavaScript。 有没有快速或最佳的方法来进行此转换?如果不是所有可能的捆绑包都能正常工作,那就没关系了。 问题答案: 您可以用来获取捆绑软件包含的密钥列表。然后,您可以遍历这些键,并将每个键值对添加到中: 请注意,这将需要您抓住一个。 编辑: 有人指出,以前的代码不能很好地处理和键入。如
问题内容: 我正在将Jersey用于REST WS,并且得到的响应为JSON。 我想将此响应转换为POJO。怎么做 ? 问题答案: 要在Java和JSON之间进行转换,有很多可供选择的API 。 您可以“手动”遍历JSON组件并提取值以填充Java对象,或者可以使用JSON到Java的绑定API来解决许多低级映射问题。