我有一个像这样的json:
{
"course1": [
{
"courseName": "test",
"section": "123",
"academicHours": "3",
"day1": "1",
"room1": "0145 03 1 B 015"
}
],
"course2": [
{
"courseName": "test",
"section": "456",
"academicHours": "3",
"day1": "1",
"room1": "0145 03 1 B 015"
}
],
"course2": [
{
"courseName": "test",
"section": "789",
"academicHours": "3",
"day1": "1",
"room1": "0145 03 1 B 015"
}
],
"course2": [
{
"courseName": "test",
"section": "1011",
"academicHours": "3",
"day1": "1",
"room1": "0145 03 1 B 015"
}
],
"course3": [
{
"courseName": "test",
"section": "1213",
"academicHours": "3",
"day1": "1",
"room1": "0145 03 1 B 015"
}
],
"course3": [
{
"courseName": "test",
"section": "1415",
"academicHours": "3",
"day1": "1",
"room1": "0145 03 1 B 015"
}
]
}我希望组合任何块/对象/列表(我不知道它叫什么),使它们具有相同的键值。就像这样:
{
"course1": [
{
"courseName": "test",
"section": "123",
"academicHours": "3",
"day1": "1",
"room1": "0145 03 1 B 015"
}
],
"course2": [
{
"courseName": "test",
"section": "456",
"academicHours": "3",
"day1": "1",
"room1": "0145 03 1 B 015"
},
{
"courseName": "test",
"section": "789",
"academicHours": "3",
"day1": "1",
"room1": "0145 03 1 B 015"
},
{
"courseName": "test",
"section": "1011",
"academicHours": "3",
"day1": "1",
"room1": "0145 03 1 B 015"
}
],
"course3": [
{
"courseName": "test",
"section": "1213",
"academicHours": "3",
"day1": "1",
"room1": "0145 03 1 B 015"
},
{
"courseName": "test",
"section": "1415",
"academicHours": "3",
"day1": "1",
"room1": "0145 03 1 B 015"
}
]
}我如何使用python中的正则表达式来完成这个任务?或者任何正则表达式查询?
此外,我尝试使用json.dumps()并从那里开始工作,但由于某种原因,当我将它与任何包含阿拉伯字符的json一起使用时,它就会抓狂,把整件事情搞砸。所以我很不幸地被正则表达式困住了。
谢谢你的帮助:)
发布于 2019-01-25 01:29:53
stdlib json提供了一个钩子,允许使用重复键解码对象。这个简单的“扩展”钩子应该适用于示例数据:
def myhook(pairs):
d = {}
for k, v in pairs:
if k not in d:
d[k] = v
else:
d[k] += v
return d
mydata = json.loads(bad_json, object_pairs_hook=myhook)虽然JSON规范中没有任何东西不允许重复的键,但首先应该避免它:
1.1。本文件中使用的关键词“必须”、“不得”、“要求”、“应”、“不应”、“不应”、“建议”、“可”和“可选”应解释为RFC2119所述。
..。
对象结构表示为围绕零或多个名称/值对(或多个成员)的一对花括号。名字是字符串。在每个名称之后加上一个冒号,将名称与值分隔开来。一个逗号将值与下面的名称分隔开来。对象中的名称应该是唯一的。
https://stackoverflow.com/questions/54357405
复制相似问题