如何在Python3中将utf8文本文件转换为Json对象

2024-09-25 00:36:29 发布

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

我是Python新手,遇到了关于Unicode文本内容和JSON字段的问题

我的目标是读取一些包含Unicode字符的文本文件,提取全部内容并将其放入JSON字段中。但是,JSON字段将包含编码(UTF-8)而不是原始Unicode字符(例如:JSON将包含\u00e8\u0107而不是èć)。如何将整个文本文件内容导入JSON字段

这是我的代码:

import json

file_1 = open('utf8_1.txt', 'r', encoding='utf-8').read()
file_2 = open('utf8_2.txt', 'r', encoding='utf-8').read()

with open("test.json", "r") as jsonFile:
    data = json.load(jsonFile)

data[0]['field_1'] = file_1
data[0]['field_2'] = file_2

with open("test.json", "w") as jsonFile:
    json.dump(data, jsonFile)

以下是两个具有Unicode字符的文件:

utf8\u 1.txt:

Kèććia
ivò

utf8_2.txt:

ććiùri
iχa

下面是test.json(注意:两个字段设置为空,需要使用文件内容更新)

[
  {
    "field_1": "",
    "field_2": ""
  }
]

下面是我从运行上述代码中得到的test.json

[
  {
    "field_1": "K\u00e8\u0107\u0107ia\niv\u00f2",
    "field_2": "\u0107\u0107i\u00f9ri\ni\u03c7a"
  }
]

但是我对test.json的预期输出如下所示:

[
  {
    "field_1": "Kèććia ivò",
    "field_2": "ććiùri iχa"
  }
]

我的目标是将utf8_1.txt中的任何内容放入字段_1中,并将utf8_2.txt中的任何内容放入test.json中的字段_2。最好是字符串值。我已经坚持了很长时间了<我真的很感谢你的帮助


Tags: testtxtjsonfield内容目标dataunicode
1条回答
网友
1楼 · 发布于 2024-09-25 00:36:29

您得到的是有效的UTF-8 JSON。它只是使用非ASCII字符的转义码编写为纯ASCII,作为UTF-8的子集,它也是有效的UTF-8。用json.load读回它,它将是原始字符串。如果要在写入文件时将实际Unicode字符编码为UTF-8而不是转义码,请使用json.dumpensure_ascii=False参数,并确保使用encoding='utf8'打开文件:

with open("test.json", "w", encoding='utf8') as jsonFile:
    json.dump(data, jsonFile, ensure_ascii=False)

这是在documentation中:

json.dump(obj, fp, *, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, default=None, sort_keys=False, **kw)
...
If ensure_ascii is true (the default), the output is guaranteed to have all incoming non-ASCII characters escaped. If ensure_ascii is false, these characters will be output as-is.

相关问题 更多 >