1、json.decoder.JSONDecodeError: Unexpected UTF-8 BOM (decode using utf-8-sig): line 1 column 1 (char 0):
解:因为 utf-8 和 utf-8-sig 是不一样的,我们将 其改成 utf-8-sig 就可以运行了。
1、data.json 内容如下:
[
{
"test": {
"one": "2",
"two": "2"
},
"author": "宋太祖",
"paragraphs": [
"欲出未出光辣達,千山萬山如火發。",
"須臾走向天上來,逐却殘星趕却月。"
],
"strains": [
"仄仄仄仄平仄仄,平平仄平○仄仄。",
"平平仄仄平仄平,仄仄平平?仄仄。"
],
"title": "日詩"
},
{
"author": "宋太祖",
"paragraphs": [
"未離海底千山黑,纔到天中萬國明。"
],
"strains": [
"仄○仄仄平平仄,平仄平○仄仄平。"
],
"title": "句"
}
]
2、python读取json文件代码:
import json
def read_font():
file = open('data.json', 'r', encoding='utf-8-sig')
s = json.load(file)
print(s[0])
# 运行结果为:{'test': {'one': '2', 'two': '2'}, 'author': '宋太祖', 'paragraphs': ['欲出未出光辣達,千山萬山如火發。', '須臾走向天上來,逐却殘星趕却月。'], 'strains': ['仄仄仄仄平仄仄,平平仄平○仄仄。', '平平仄仄平仄平,仄仄平平?仄仄。'], 'title': '日詩'}
print(s[0]['test']['two']) #注意 数组 与 多重结构 的访问方式!
# 运行结果为:2
if __name__ == '__main__' :
read_font()
三、总结:
0、运到问题先看报错内容,实在不能解决再百度。
1、错把 if __name__ == '__main__' : 写成 if '__name__' == '__main__' : .实在有毒,可能太久没有写 python 的原因。
2、感觉 编码的东西 好烦,不知道大神们 有啥诀窍没?? utf gbk ansi 等一会 decode 一会 encode 着实写代时候深感不适呀