簡體   English   中英

"python,如何在json文件中找到特定的鍵值,然后保存整行json文件?"

[英]python, How to find specific key value in json file then save whole line of json file?

我是新手,我需要在json文件中導出特定的鍵值,我搜索了很多網站但找不到我需要的代碼,希望這對我有幫助

我的 json 文件


{"person":{"name":"Silva","sex":"female","age":21}}
{"person":{"name":"LANA","sex":"male","age":28}}
{"person":{"name":"Oliveira","sex":"female","age":35}}
{"person":{"name":"KENN","sex":"male","age":26}}

請記住,輸入文件本身<\/em>不是 JSON 文件。 每行都是有效的 JSON,因此必須單獨處理。

例如:

import json

with open ('foonew.txt', 'w', encoding='utf-8') as out:
    with open('foo.txt', encoding='utf-8') as j:
        for line in j:
            if (d := json.loads(line))['person']['sex'] == 'male':
                print(json.dumps(d), file=out)

您需要展示您嘗試過的內容,以便我們了解您期望的格式。 然而,這是解決它的最簡單方法之一 -

我假設您有一個 JSON 文件,其中存儲了所有男性和女性的詳細信息(每條記錄用逗號分隔,並且僅使用雙引號""<\/code>而不是單個''<\/code> !您給定的 JSON 文件無效)

從這里您需要導入 json,然后使用 json.load 轉換為 python 對象(在這種情況下它將是一個列表),然后對其進行迭代以檢查每個字典中的鍵'sex'<\/code>並進行相應的過濾。 完整代碼:

import json

filename = "<filename>.json"
with open(filename, "rt") as file:
    data = json.load(file)

new_data = []
for record in data:
    if record['person']['sex'] == 'male':
        new_data.append(record)

newfile = "<new_filename>.json"
with open(newfile, "wt") as file:
    json.dump(new_data, file)

利用:

import json
s = json.dumps([{'person':{'name':'Silva','sex':'female','age':21}},
{'person':{'name':'LANA','sex':'male','age':28}},
{'person':{'name':'Oliveira','sex':'female','age':35}},
{'person':{'name':'KENN','sex':'male','age':26}}])

如果你有一個 json 文件,那么:

s = 'file_path'

s = pd.read_json(s)
s = s['person'].apply(pd.Series)
s[s['sex']=='male']

在這里,我將 json 轉換為 df,然后將每一行轉換為單獨的列,然后過濾 df。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM