我有文本檔案,我想將其轉換為 JSON:
red|2022-09-29|03:15:00|info 1
blue|2022-09-29|10:50:00|
yellow|2022-09-29|07:15:00|info 2
所以我輸入了一個腳本來將此檔案轉換為 JSON:
import json
filename = 'input_file.txt'
dict1 = {}
fields =['name', 'date', 'time', 'info']
with open(filename) as fh:
l = 1
for line in fh:
description = list( line.strip().split("|", 4))
print(description)
sno ='name' str(l)
i = 0
dict2 = {}
while i<len(fields):
dict2[fields[i]]= description[i]
i = i 1
dict1[sno]= dict2
l = l 1
out_file = open("json_file.json", "w")
json.dump(dict1, out_file, indent = 4)
out_file.close()
輸出如下所示:
{
"name1": {
"name": "red",
"date": "2022-09-29",
"time": "03:15:00",
"info": "info 1"
},
"name2": {
"name": "blue",
"date": "2022-09-29",
"time": "10:50:00",
"info": ""
},
"name3": {
"name": "yellow",
"date": "2022-09-29",
"time": "07:15:00",
"info": "info 2"
}
}
如您所見,我這樣做了,但現在我想更改此 JSON 檔案的外觀。如何更改它以使我的輸出看起來像這樣:看起來像這樣:
[
{"name":"red", "date": "2022-09-29", "time": "03:15:00", "info":"info 1"},
{"name":"blue", "date": "2022-09-29", "time": "10:50:00", "info":""},
{"name":"yellow", "date": "2022-09-29", "time": "07:15:00", "info":"info 2"}
]
uj5u.com熱心網友回復:
我會使用pandas,它允許您在一個陳述句中解決您的問題并避免重新發明輪子:
import pandas as pd
pd.read_table("input_file.txt", sep="|", header=None,
names=["name", "date" , "time", "info"]).fillna("")\
.to_json("json_file.json", orient="records")
uj5u.com熱心網友回復:
如果您看到所需的 json 輸出,它是一個串列,而不是您現在擁有的 dict。因此,使用list(data) 而不是dict(dict1) 應該會給出正確的輸出。
以下更新的代碼應生成所需格式的 json 資料 -
import json
filename = 'input_file.txt'
data = []
fields =['name', 'date', 'time', 'info']
with open(filename) as fh:
l = 1
for line in fh:
description = list( line.strip().split("|", 4))
print(description)
sno ='name' str(l)
i = 0
dict2 = {}
while i<len(fields):
dict2[fields[i]]= description[i]
i = i 1
data.append(dict2)
l = l 1
out_file = open("json_file.json", "w")
json.dump(data, out_file, indent = 4)
out_file.close()
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/518545.html
標籤:Pythonjson
