关于Python:如何从json文件中读取中文问题
我的文件 username.json 里面有中文,比如里面的内容为"电脑"现在我利用下面的代码来读取它:
import json
filename = 'username.json'
with open(filename) as file_object:
username = json.load(file_object)
print("Welcome back, "+username+"!")
用这一串代码我运行时会报错。我用了网上的一些办法,他们写的东西特别多并且都没用,请问大佬们我这个该怎么修改代码才能读取这文件里的中文呢? 这样就可以
import json
filename = 'username.json'
with open(filename, 'r') as file_object:
username = json.loads(file_object.read())
print("Welcome back, "+username+"!") louxinghao 发表于 2021-8-18 09:27
这样就可以
朋友,我用你这个还是显示报错,如果你不嫌麻烦就用你的编辑器试一下, 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 格式的内容,那就按我刚刚写的那样 一般的json文件存中文用Unicode可以避免文件编码问题
你存的时候这样存 读的时候就无视编码打开 比如下面的这种
{
"customName" : "\u521D\u53F7\u673A",
"bodyPhysics" : 0.6,
"modelPos" : {
"x" : -3.13331604003906,
"y" : -3.47777724266052,
"z" : -0.800000011920929
}, louxinghao 发表于 2021-8-18 09:58
如果的 username.json 文件里面只有“电脑”这两个字,那你直接这样就可以
朋友感谢你的回复,刚才被别人叫出去了,没有及时回复不好意思
我刚才可能没说清楚,打印的内容是:
Welcome back, 鐢佃剳!
而不是:
Welcome back, 电脑! 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, 鐢佃剳!
打印的结果不是电脑 我这个帖子中讲的报错是打印结果为:Welcome back, 鐢佃剳!
而不是Welcome back, 电脑! LeonardCohenX 发表于 2021-8-18 10:46
朋友,存中文我会,我用的是:
import json
username = input("What is your name? ")
为什么要用 ensure_ascii=False kogawananari 发表于 2021-8-18 10:53
为什么要用 ensure_ascii=False
网上学的,这个可以存 LeonardCohenX 发表于 2021-8-18 10:55
网上学的,这个可以存
去掉 ensure_ascii=False
能正常输出电脑吗 kogawananari 发表于 2021-8-18 10:56
去掉 ensure_ascii=False
能正常输出电脑吗
去掉后比如我输入"武"
打印的结果就是:"\u6b66" LeonardCohenX 发表于 2021-8-18 10:41
朋友感谢你的回复,刚才被别人叫出去了,没有及时回复不好意思
我刚才可能没说清楚,打印的内容是:
We ...
编码问题
open(filename, 'r', encoding='utf8')
这样就可以了 LeonardCohenX 发表于 2021-8-18 10:47
我这个帖子中讲的报错是打印结果为:Welcome back, 鐢佃剳!
而不是Welcome back, 电脑!
这样可以明白吗
LeonardCohenX 发表于 2021-8-18 10:58
去掉后比如我输入"武"
打印的结果就是:"%u6b66"
怎么可能 打印结果应该是中文 实测 louxinghao 发表于 2021-8-18 11:02
这样可以明白吗
这样看懂了,这样打印的结果就正确了,谢谢你😁 louxinghao 发表于 2021-8-18 10:59
编码问题
这样就可以了
是的就是这样,谢谢你😁 我能输出中文 kogawananari 发表于 2021-8-18 11:12
我能输出中文
我也不知道你这个为什么会成功,可能你这个能够自动编码,我用的是VS code,必须用:
open(filename, 'r',encoding='utf8')
用这种格式才能打印出正确的中文 LeonardCohenX 发表于 2021-8-18 11:16
我也不知道你这个为什么会成功,可能你这个能够自动编码,我用的是VS code,必须用:
open(filename, 'r' ...
至于为啥我也不清楚
页:
[1]
2