[英]How to find out specific key-value pair from a big json file using python
[英]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.