这是我第一次尝试在 Python 中使用 JSON 文件,虽然我已经阅读了很多关于这件事的东西,但我仍然很困惑。我想逐行读取名为 jason.json 的文件,将其存储到名为 data 的列表中,然后打印它。但是,我总是收到以下错误:
Traceback (most recent call last):
File "try.py", line 6, in <module>
data.append(json.loads(line))
File "C:\Users\...\Python35\lib\json\__init__.py", line 319, in loads
return _default_decoder.decode(s)
File "C:\Users\...\Python35\lib\json\__init__.py", line 339, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "C:\Users\...\Python35\lib\json\__init__.py", line 355, in raw_decode
obj, end = self.scan_once(s, idx)
json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes: line 2 column 1 (char 2)
Run Code Online (Sandbox Code Playgroud)
这是我的代码:
import json
data = []
with open('jason.json') as f:
for line in f:
data.append(json.loads(line))
print(data)
Run Code Online (Sandbox Code Playgroud)
这是 jason.json:
{
"E(2,3)" : "A common Afro-Cuban drum pattern",
"E(2,5)" : "A rhythm found in Greece",
"E(3,4)" : "It is the archetypal pattern of the Cumbia from Colombia",
"E(3,5)" : "Persian rhythm"
}
Run Code Online (Sandbox Code Playgroud)
先感谢您!
请注意,存储在其中的数据jason.json是字典而不是列表。所以,如果你想要一个元组列表,你可以这样做
with open('jason.json') as f:
data = list(json.load(f).items())
print(data)
Run Code Online (Sandbox Code Playgroud)
这产生
[('E(3,5)', 'Persian rhythm'), ('E(3,4)', 'It is the archetypal pattern of the Cumbia from Colombia'), ('E(2,3)', 'A common Afro-Cuban drum pattern'), ('E(2,5)', 'A rhythm found in Greece')]
Run Code Online (Sandbox Code Playgroud)