我有一个JSON文件,我想用Python中的脚本删除方括号后的所有字段。
我的JSON文件是这样的:
{
"Employees": [
{
"userId": "krish",
"jobTitle": "Developer",
"firstName": "Krish",
"lastName": "Lee",
"employeeCode": "E1",
"region": "CA",
"phoneNumber": "123456",
"emailAddress": "krish.lee@learningcontainer.com"
},
{
"userId": "devid",
"jobTitle": "Developer",
"firstName": "Devid",
"lastName": "Rome",
"employeeCode": "E2",
"region": "CA",
"phoneNumber": "1111111",
"emailAddress": "devid.rome@learningcontainer.com"
},
{
"userId": "tin",
"jobTitle": "Program Directory",
"firstName": "tin",
"lastName": "jonson",
"employeeCode": "E3",
"region": "CA",
"phoneNumber": "2222222",
"emailAddress": "tin.jonson@learningcontainer.com"
}
]
}
我的脚本是这样的:
import json
import re
with open('data.json')as f:
data = json.load(f)
for item in data:
re.sub(" *[.*] *"," ",item)
with open('new_data.json','w') as f:
json.dump(item, f)
我期待这个:
{
"Employees":
}
但我收到的是:
"Employees"
告诉我它为什么摘下牙套,然后来解决这个问题。
JSON是数据结构的序列化,没有规范格式。这意味着在上面进行任何类型的文本匹配或正则表达式都是一个非常糟糕的主意,而且只是在找麻烦。
正确的方法是使用JSON解析器将其转换为对象,然后根据对象数据合成您想要的任何输出。
在您的情况下,解析的对象将是一个带有单个密钥的字典,您可以获得该密钥,例如:
print("{{n "{0}":n}}".format(list(json.load(f).keys())[0]))
结果:
{
"Employees":
}
不管有什么价值,这都不是一个有效的JSON,所以我不确定你为什么需要它