我制作了一个250MB的json文件,应该是这样的:
[ {"A":"uniquevalue0", "B":[1,2,3]},
{"A":"uniquevalue1", "B":[1]},
{"A":"uniquevalue2", "B":[1,2,3,4]} ]
其中“B”值可以是变量len> = 1. This表示我有有效的JSON。
我打电话
df = pandas.read_json('ut1.json', orient = 'records', dtype={"A":str, "B":list})
Here是文档。在阅读pandas数据帧时,我得到以下回溯:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/.../pandas/io/json.py", line 198, in read_json
date_unit).parse()
File "/.../pandas/io/json.py", line 266, in parse
self._parse_no_numpy()
File "/.../pandas/io/json.py", line 496, in _parse_no_numpy
loads(json, precise_float=self.precise_float), dtype=None)
ValueError: Unexpected character found when decoding 'true'
无法想到出了什么问题。 The python file that is throwing the error没有用。
答案 0 :(得分:7)
我有相同的错误消息,我通过使用绝对路径解决了它。
import os
basePath = os.path.dirname(os.path.abspath(__file__))
df = pandas.read_json(basePath + '/ut1.json', orient = 'records', dtype={"A":str, "B":list})
这对我有用!
答案 1 :(得分:1)
尝试了@ learn2day的答案后,我仍然无法从那里得到好的结果,但是我确实尝试了以下代码,并且一切对我都有效。 (PS:我正在打开一个JSON文件,其中出现了汉字UTF-8字符-汉字)
pandas.read_json(open("ut1.json", "r", encoding="utf8"))
encoding="utf8"
是此代码的关键部分。
答案 2 :(得分:1)
就我而言,路径错误。
通过将其放置在pandas.read_json
的前面来确保检查您的当前工作目录:
import os
print(os.getcwd())
答案 3 :(得分:1)
我遇到了同样的问题,然后意识到问题出在将文本从浏览器复制并粘贴到文件中时。它引入了回车符,以便将给定键的每一行分成多行。就是问题所在。希望这对某人有帮助!
答案 4 :(得分:0)
我今天在调用pandas.read_json('my_file.json')时收到了“值错误:预期的对象或值”。我之前用同一个文件运行过这段代码,所以非常担心它今天不能正常工作。后来,我发现由于某种原因,json文件不在同一个目录中。然后,我通过右键单击文件链接从git下载了该文件。这是一个坏主意:(。我猜json文件编码不正确,所以即使json文件在同一个dir中,我仍然会得到相同的错误。最后,我删除了json文件,克隆了原始文件git repo获取json文件并将其放在同一个dir中。然后,这个pandas.read_json确实有效。所以,首先请确保json文件存在于正确的目录中,然后确保文件不是损坏。
答案 5 :(得分:0)
发布此消息是因为上面的答案与我的错误提示不符:当我阅读一个很长的字符串文档(我认为这是有效的json格式,但包含从Python导出到字符串的nan
)时,这种情况就发生了有效的json应该为"null"
。如果文档不是使用json包创建的,则此错误消息可能会指示错误的值。
答案 6 :(得分:0)
在Linux上运行代码时,我遇到了相同的错误。我意识到赋予read_csv的文件名使用.JSON而不是.json。将其更改为小写对我有用。
答案 7 :(得分:0)
对我来说,问题是文件开头有一个 UTF-8 BOM 字符。使用以下编码解决了问题:
df = pd.read_json(r'C:\temp\foo.jsonl', lines=True, encoding='utf-8-sig')