LeonardCohenX 发表于 2021-8-18 09:24:10

关于Python:如何从json文件中读取中文问题

我的文件 username.json 里面有中文,比如里面的内容为"电脑"
现在我利用下面的代码来读取它:
import json
filename = 'username.json'
with open(filename) as file_object:
    username = json.load(file_object)
    print("Welcome back, "+username+"!")
用这一串代码我运行时会报错。我用了网上的一些办法,他们写的东西特别多并且都没用,请问大佬们我这个该怎么修改代码才能读取这文件里的中文呢?

louxinghao 发表于 2021-8-18 09:27:51

这样就可以
import json
filename = 'username.json'
with open(filename, 'r') as file_object:
    username = json.loads(file_object.read())
    print("Welcome back, "+username+"!")

LeonardCohenX 发表于 2021-8-18 09:38:27

louxinghao 发表于 2021-8-18 09:27
这样就可以

朋友,我用你这个还是显示报错,如果你不嫌麻烦就用你的编辑器试一下,

louxinghao 发表于 2021-8-18 09:58:18

LeonardCohenX 发表于 2021-8-18 09:38
朋友,我用你这个还是显示报错,如果你不嫌麻烦就用你的编辑器试一下,

如果的 username.json 文件里面只有“电脑”这两个字,那你直接这样就可以
import json
filename = 'username.json'
with open(filename, 'r') as file_object:
    username = file_object.read()
    print("Welcome back, "+username+"!")

如果是 json 格式的内容,那就按我刚刚写的那样

kogawananari 发表于 2021-8-18 09:58:42

一般的json文件存中文用Unicode可以避免文件编码问题
你存的时候这样存 读的时候就无视编码打开 比如下面的这种
{
    "customName" : "\u521D\u53F7\u673A",
    "bodyPhysics" : 0.6,
    "modelPos"    : {
      "x" : -3.13331604003906,
      "y" : -3.47777724266052,
      "z" : -0.800000011920929
    },

LeonardCohenX 发表于 2021-8-18 10:41:09

louxinghao 发表于 2021-8-18 09:58
如果的 username.json 文件里面只有“电脑”这两个字,那你直接这样就可以




朋友感谢你的回复,刚才被别人叫出去了,没有及时回复不好意思
我刚才可能没说清楚,打印的内容是:
Welcome back, 鐢佃剳!
而不是:
Welcome back, 电脑!

LeonardCohenX 发表于 2021-8-18 10:46:16

kogawananari 发表于 2021-8-18 09:58
一般的json文件存中文用Unicode可以避免文件编码问题
你存的时候这样存 读的时候就无视编码打开 比如下面 ...

朋友,存中文我会,我用的是:
import json
username = input("What is your name? ")
filename = 'username.json'
with open(filename, 'w',encoding='utf-8') as f_obj:
    json.dump(username,f_obj,ensure_ascii=False)
    print("We'll remember you when you come")
但是我不会读中文,读中文我用:
import json
filename = 'username.json'
with open(filename) as file_object:
    username = json.load(file_object)
    print("Welcome back, "+username+"!")
但是用这个打印的结果是:
Welcome back, 鐢佃剳!
打印的结果不是电脑

LeonardCohenX 发表于 2021-8-18 10:47:33

我这个帖子中讲的报错是打印结果为:Welcome back, 鐢佃剳!
而不是Welcome back, 电脑!

kogawananari 发表于 2021-8-18 10:53:24

LeonardCohenX 发表于 2021-8-18 10:46
朋友,存中文我会,我用的是:
import json
username = input("What is your name? ")


为什么要用 ensure_ascii=False

LeonardCohenX 发表于 2021-8-18 10:55:40

kogawananari 发表于 2021-8-18 10:53
为什么要用 ensure_ascii=False

网上学的,这个可以存

kogawananari 发表于 2021-8-18 10:56:52

LeonardCohenX 发表于 2021-8-18 10:55
网上学的,这个可以存

去掉 ensure_ascii=False

能正常输出电脑吗

LeonardCohenX 发表于 2021-8-18 10:58:55

kogawananari 发表于 2021-8-18 10:56
去掉 ensure_ascii=False

能正常输出电脑吗

去掉后比如我输入"武"
打印的结果就是:"\u6b66"

louxinghao 发表于 2021-8-18 10:59:09

LeonardCohenX 发表于 2021-8-18 10:41
朋友感谢你的回复,刚才被别人叫出去了,没有及时回复不好意思
我刚才可能没说清楚,打印的内容是:
We ...

编码问题
open(filename, 'r', encoding='utf8')
这样就可以了

louxinghao 发表于 2021-8-18 11:02:09

LeonardCohenX 发表于 2021-8-18 10:47
我这个帖子中讲的报错是打印结果为:Welcome back, 鐢佃剳!
而不是Welcome back, 电脑!

这样可以明白吗

kogawananari 发表于 2021-8-18 11:11:02

LeonardCohenX 发表于 2021-8-18 10:58
去掉后比如我输入"武"
打印的结果就是:"%u6b66"

怎么可能 打印结果应该是中文 实测

LeonardCohenX 发表于 2021-8-18 11:11:28

louxinghao 发表于 2021-8-18 11:02
这样可以明白吗

这样看懂了,这样打印的结果就正确了,谢谢你😁

LeonardCohenX 发表于 2021-8-18 11:12:16

louxinghao 发表于 2021-8-18 10:59
编码问题

这样就可以了

是的就是这样,谢谢你😁

kogawananari 发表于 2021-8-18 11:12:36

我能输出中文

LeonardCohenX 发表于 2021-8-18 11:16:23

kogawananari 发表于 2021-8-18 11:12
我能输出中文

我也不知道你这个为什么会成功,可能你这个能够自动编码,我用的是VS code,必须用:
open(filename, 'r',encoding='utf8')
用这种格式才能打印出正确的中文

LeonardCohenX 发表于 2021-8-18 11:17:06

LeonardCohenX 发表于 2021-8-18 11:16
我也不知道你这个为什么会成功,可能你这个能够自动编码,我用的是VS code,必须用:
open(filename, 'r' ...

至于为啥我也不清楚
页: [1] 2
查看完整版本: 关于Python:如何从json文件中读取中文问题