在尝试弄清楚它时,我遇到了一些困难,这是使用Python将字符串转换为有效JSON的最佳方式。
基本上,我需要做的是从文件中读取一个字符串(已经以JSON格式给出),并将其转换为有效的JSON。在我的情况下,唯一的问题是最后一个对象之后的“”:
WebElement element = driver.findElement(By.xpath("//tr[starts-with(@class,'MuiTableRow')][@val='4']"));
element.click();
这是我读取文件的方式:
{
"InputTable" :
[
{
"ServerName":"serverOne",
"To":"userOne",
"CC":"",
"TemplateName":"LinuxTemplate"
},
{
"ServerName":"serverTwo",
"To":"userTwo",
"CC":"userFive",
"TemplateName":"LinuxTemplateWithCC"
}, << get rid of this comma
],
"Params":
[
{"Col_0":"Server","Col_1":"User","Col_2":"Action"}
]
}
由于JSON无效,因此加载JSON文件失败。 您有什么建议吗,首先是如何去除最后一个逗号,其次是如何验证字符串并确保其格式正确?
答案 0 :(得分:2)
您可以将其解析为YAML(其内联语法是JSON的更宽松的超集):
import yaml
data = yaml.load(open(json_file))
然后要获取有效的JSON,可以将对象转储回去:
import json
json.dumps(data)
答案 1 :(得分:0)
您可以使用jsoncomment https://pypi.python.org/pypi/jsoncomment
import json
from jsoncomment import JsonComment
with open('/nfs/somePath/LinuxInput.JSON') as json_file:
parser = JsonComment(json)
data = parser.load(json_file)
答案 2 :(得分:0)
如果您的JSON除尾随逗号外均有效,则可以尝试使用更宽松的解析器,如其他解决方案所述。
如果您只想删除结尾的逗号,则此正则表达式应该有效。
(?<=[}\]"']),(?!\s*[{["'])
用空字符串替换所有出现的内容。
import re
regex = r'''(?<=[}\]"']),(?!\s*[{["'])'''
result = re.sub(regex, "", test_str, 0)
答案 3 :(得分:-1)
去那里:
= ^ .. ^ =
test_string = """{
"InputTable" :
[
{
"ServerName":"serverOne",
"To":"userOne",
"CC":"",
"TemplateName":"LinuxTemplate"
},
{
"ServerName":"serverTwo",
"To":"userTwo",
"CC":"userFive",
"TemplateName":"LinuxTemplateWithCC"
},
],
"Params":
[
{"Col_0":"Server","Col_1":"User","Col_2":"Action"}
]
}"""
test_string = re.sub("},\n\n", "}\n", test_string)
valid_jonson = json.loads(test_string)