gpt4 book ai didi

python - 删除括号之间的所有最后一个逗号

转载 作者:太空狗 更新时间:2023-10-29 21:25:23 36 4
gpt4 key购买 nike

我正在尝试将以下内容格式化为 JSON(在 Python 中):

{
"sessionTimeout":"3600.0",
"serverVersion":"LK_LK-NL-7_188-176-419",
"worldDawn":"2018-10-09 06:00:00 Etc/GMT",
"Data":{
"Player":[
{
"nick":"Player11226400",
"points":"44",
"alliancePermission":"0",
"isOnVacation":"false",
"id":"5048",
"rank":"561",
"entityName":"Player",
},
{
"nick":"Player11230580",
"points":"15",
"alliancePermission":"0",
"isOnVacation":"false",
"id":"5215",
"rank":"2081",
"entityName":"Player",
},
{
"nick":"Player11291581",
"points":"15",
"alliancePermission":"0",
"isOnVacation":"false",
"id":"5942",
"rank":"2081",
"entityName":"Player",
}
]
}
}

当然,每个 JSON 验证器都会告诉我这不是有效的 JSON,因为每个 } 之前都有尾随的“,”,所以我想删除那个逗号。我尝试用 .replace('"Player",", '"Player"') 删除它们,但我认为这不是一个好的解决方案。这是因为我在例如 Alliance 或 Habitat 字符串中也有尾随“,” ("栖息地", & "联盟",)

谁能帮我找到解决这个问题的更好方法?

最佳答案

两种解决方案:

第一个,如果你的 json 文件没有 null 就好了或 false/true bool 值将使用 ast.literal_eval 读取输入它可以处理这些逗号,然后在需要时将字典转储为 json:

d = ast.literal_eval(txt)
print(json.dumps(d,indent=4))

如果不能,如果下一行以空格 + 右大括号/方括号开头,则可以使用正则表达式删除换行符之前出现的逗号:

import re

print(json.loads(re.sub(",(\n\s+[\}\]])",r"\1",txt)))

这是一个完整的代码片段,其中包含 2 种方法以及您输入的简化版本:

import ast,json

txt = """{
"sessionTimeout":"3600.0",
"serverVersion":"LK_LK-NL-7_188-176-419",
"worldDawn":"2018-10-09 06:00:00 Etc/GMT",
"Data":{
"Player":[
{
"nick":"Player11226400",
"rank":"561",
"entityName":"Player",
},
{
"nick":"Player11230580",
"rank":"2081",
"entityName":"Player",
},
{
"nick":"Player11291581",
"rank":"2081",
"entityName":"Player",
}
]
}
}"""

print("ast literal eval:")
d = ast.literal_eval(txt)
print(json.dumps(d,indent=4))

import re

print("regex:")
d = json.loads(re.sub(",(\n\s+[\}\]])",r"\1",txt))
print(json.dumps(d,indent=4))

这两种方法都成功地解析了您的输入文件。只要没有空指针和 bool 值,第一种方法就可以完美地工作,第二种方法在某些模糊的格式化情况下可能会失败。如果运气不好,您可以在两者之间破解一些东西。

关于python - 删除括号之间的所有最后一个逗号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52698573/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com