替换JSON文件中字典列表中的值



我有一个JSON文件,其中包含9000个字典的列表。

示例

[{"auftrags_id":348667,"vertrags_id":11699,"ursprungsauftrag":"",
"umsatz":0.28,"brutto":0.33,"vertrauensschadenhaftpflicht":"",
"stornoreserve":"","umsatzsteuer_betrag":"0.05","netto":0.28,
"steuerpflichtig":"0","art_der_rechnung":"Rechnung","vp_nummer":538},
{"auftrags_id":348668,"vertrags_id":11699,"ursprungsauftrag":"",
"umsatz":0.28,"brutto":0.33,"vertrauensschadenhaftpflicht":"",
"stornoreserve":"","umsatzsteuer_betrag":"0.05","netto":0.28,
"steuerpflichtig":"0","art_der_rechnung":"Rechnung","vp_nummer":538},
{"auftrags_id":349210,"vertrags_id":24894,"ursprungsauftrag":"X",
"umsatz":0.87,"brutto":1.04,"vertrauensschadenhaftpflicht":"X",
"stornoreserve":"X","umsatzsteuer_betrag":"0.17","netto":0.87,
"steuerpflichtig":"0","art_der_rechnung":"Rechnung","vp_nummer":538}]

要将json文件上传到Postgresql,我需要将X替换为接受为float的值。我认为将每个字典中的值"X"替换为"0.0001"就可以做到这一点。然后是没有内容的值,",我不知道如何处理它们,也许也用'0.0001'代替它们,只是为了上传。

所需输出:

[{"auftrags_id":348667,"vertrags_id":11699,"ursprungsauftrag":0.0001,
"umsatz":0.28,"brutto":0.33,"vertrauensschadenhaftpflicht":0.0001,
"stornoreserve":0.0001,"umsatzsteuer_betrag":0.05,"netto":0.28,
"steuerpflichtig":0.0001,"art_der_rechnung":"Rechnung","vp_nummer":538},
{"auftrags_id":348668,"vertrags_id":11699,"ursprungsauftrag":0.0001,
"umsatz":0.28,"brutto":0.33,"vertrauensschadenhaftpflicht":0.0001,
"stornoreserve":0.0001,"umsatzsteuer_betrag":0.05,"netto":0.28,
"steuerpflichtig":0.0001,"art_der_rechnung":"Rechnung","vp_nummer":538},
{"auftrags_id":349210,"vertrags_id":24894,"ursprungsauftrag":0.0001,
"umsatz":0.87,"brutto":1.04,"vertrauensschadenhaftpflicht":0.0001,
"stornoreserve":0.0001,"umsatzsteuer_betrag":0.17,"netto":0.87,
"steuerpflichtig":"0","art_der_rechnung":"Rechnung","vp_nummer":538}]

我已经有一个代码来上传文件,但我需要清理JSON文件为Postgresql接受它。感谢任何帮助!

您可以按照您的问题下的评论建议使用sed。它是Linux命令行(shell)的命令。请参阅关于Linux shell的文章,以及关于sed命令的文章。

Python解决方案:

#!/usr/bin/python3
import json  # load the builtin JSON module
JSON_FILE_NAME = "dictionaries.json"  # the name of your file with those dictionaries
RESULT_FILE_NAME = "result.json"  # the name of the file that will be created
# Load the file contents into variable dictionaries
with open(JSON_FILE_NAME, "r", encoding="utf8") as file:
dictionaries = json.load(file)
result = []
for dictionary in dictionaries:  # loop over the dictionaries
for key, value in dictionary.items():  # loop over the key and value pairs in the dictionary
if value in ("", "X"):
# if the value is an empty string or "X", change it to 0.0001
dictionary[key] = 0.0001
# append the dictionary to the result list
result.append(dictionary)
# save the result to a file
with open(RESULT_FILE_NAME, "w", encoding="utf8") as file:
json.dump(result, file)

最新更新