【问题标题】:Unable to read a json file in python无法在python中读取json文件
【发布时间】:2020-08-19 10:59:29
【问题描述】:

我有一个 json 文件,我正在尝试使用以下代码读取该文件

import json

with open('sample.json') as file:
     data = json.load(file)

我收到以下错误

JSONDecodeError: Expecting value: line 1 column 1 (char 0)

我的猜测是 json 文件无效,所以我在文本编辑器中打开了 json 文件并复制了数据并尝试通过在线 json 验证器对其进行验证,在线工具确认它是有效的 json。

所以我想了解我的笔记本在阅读文件时正在阅读什么,所以我尝试打印字符串,令人惊讶的是,字符串有很多不需要的值,例如 \n  等当我在记事本中打开 json 文件时肯定不存在。

with open('sample.json') as file:
     test_text = file.read()
print(test_text)

o/p 当我尝试打印读取的文件时,我进入了 python 笔记本:

'[{"iteration" : {"id" :"value"},
"filename" : "testfile.json"
}\n,
{"iteration" : {"id" :"value1"},
"filename" : "testfile2.json"
}\n]'

请告知我做错了什么以及如何解决这个问题

【问题讨论】:

  • 开头的字符看起来像UTF-8 BOM。也许这会有所帮助? stackoverflow.com/questions/13156395/…
  • @AndrejKesely 非常感谢编码:utf-8-sig 成功了。出于好奇,这些编码模式是什么?
  • 是什么进程创建了这个文件,或者这个文件是从哪里来的?
  • @CobyC 该文件是在 Azure DataFactory 上创建并以 UTF-8 格式编码的
  • @Stramzik​​ 请参阅 Python 编解码器文档中 this section 的最后两段。

标签: python json python-3.x


【解决方案1】:

使用编码参数并将其设置为utf-8-sig

with open('sample.json', encoding='utf-8-sig') as f:
    data = json.load(f)

原答案来自this question

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-21
    • 2022-01-23
    • 1970-01-01
    相关资源
    最近更新 更多