Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从json字符串读取数据,并使用python对其进行操作_Python_Json - Fatal编程技术网

从json字符串读取数据,并使用python对其进行操作

从json字符串读取数据,并使用python对其进行操作,python,json,Python,Json,我有一个像这样的.json文件 {"name":"george" , "age":28 , "gender":"male"} {"name":"maria" , "age":20 , "gender":"female"} {"name":"mike" , "age":22 , "gender":"male"} 我想用python读取文件,这样我可以得到每个值,这样我可以在以后的代码中操作它。 我尝试了以下代码: with open ("file.json" , "r") as f: data

我有一个像这样的.json文件

{"name":"george" , "age":28 , "gender":"male"}
{"name":"maria" , "age":20 , "gender":"female"}
{"name":"mike" , "age":22 , "gender":"male"}
我想用python读取文件,这样我可以得到每个值,这样我可以在以后的代码中操作它。 我尝试了以下代码:

with open ("file.json" , "r") as f:
data = json.load(f)
for line in data:
    print (line["name"])
但除非我像这样更改.json文件,否则它不会工作:

[
{"name":"george" , "age":28 , "gender":"male"},
{"name":"maria" , "age":20 , "gender":"female"},
{"name":"mike" , "age":22 , "gender":"male"}
]
如何在不更改.json文件的情况下执行该操作,或者如何使用regex操作该文件,以便运行上述代码获取每个值


非常感谢您抽出时间

假设每个字典都存储在新行中,您可以使用:

import json
with open ("file.json" , "r") as f:
    data = [json.loads(val) for val in f.readlines()]
for line in data:
    print (line["name"])
import json
with open ("file.json" , "r") as f:
    data = []
    opn = 0
    cur = ''
    for char in a.strip():
    if char == '{':
         opn += 1
    elif char == '}':
        opn -= 1
    cur += char
    if opn == 0:
        data.append(json.loads(cur))
        cur = ''
for line in data:
    print (line["name"])
此外,如果字典未存储在不同的行中,则可以使用:

import json
with open ("file.json" , "r") as f:
    data = [json.loads(val) for val in f.readlines()]
for line in data:
    print (line["name"])
import json
with open ("file.json" , "r") as f:
    data = []
    opn = 0
    cur = ''
    for char in a.strip():
    if char == '{':
         opn += 1
    elif char == '}':
        opn -= 1
    cur += char
    if opn == 0:
        data.append(json.loads(cur))
        cur = ''
for line in data:
    print (line["name"])

正如评论已经指出的,您的文件不是有效的json。 每一行都是自己的json对象,必须单独解析

以open(“file.json”,“r”)作为f的
:
data=[json.loads(line)表示f.readlines()中的行]
上面的代码使用a执行以下操作:
对于文件中的每一行,将行内容作为字符串读取,并使用json.loads()方法解析字符串。

您拥有的文件不是有效的json,您需要尽一切努力将文件转换为有效的json,然后才能将其解析为json。对于包含多个项目的JSON数组,需要逗号和括号。我不会使用正则表达式来预处理JSON并修复它,除非你有大量这样的文件,或者你无法控制文件的格式。回答得很好。
{“foo”:{“bar”:1},}
将不是有效的json(不确定这是否会成为本例的问题)@Sayse-Oh-Yea你是对的,我在考虑字典。我会更新我的答案