Python 在json中组合重复键
我有一个json,看起来像这样:Python 在json中组合重复键,python,json,regex,Python,Json,Regex,我有一个json,看起来像这样: { "course1": [ { "courseName": "test", "section": "123", "academicHours": "3", "day1": "1", "room1": "0145 03 1 B 015" } ], "course2": [ { "courseName": "test", "section": "
{
"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"
}
]
}
我想组合任何块/对象/列表(我不知道它叫什么),它们具有相同的键值。
像这样:
{
"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一起使用时,它会使整个过程变得异常混乱。
不幸的是,我一直使用正则表达式
感谢您的帮助:)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)
虽然本手册中没有禁止重复密钥的规定,但首先可能应该避免:
1.1。本文件中使用的公约
关键词“必须”、“不得”、“必需”、“应”、“不得”,
本节中的“应”、“不应”、“建议”、“可”和“可选”
文件应按照[RFC2119]中所述进行解释
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)
虽然本手册中没有禁止重复密钥的规定,但首先可能应该避免:
1.1。本文件中使用的公约
关键词“必须”、“不得”、“必需”、“应”、“不得”,
本节中的“应”、“不应”、“建议”、“可”和“可选”
文件应按照[RFC2119]中所述进行解释
第一个对象是不可能的,一个对象不能有重复的关键点。你确定这不是一个对象数组吗?@Barmar不是不可能的。。很糟糕json@wim我的意思是JSON与可能的对象不对应。我知道你的意思,但你错了@Barmar我制作这个json时使用了一个函数,该函数可以将一些数据从pdf文件转换为json,这就是为什么它是一个糟糕的json。这就是为什么我问这个问题,因为我想修复它。第一个对象是不可能的,一个对象不能有重复的键。你确定这不是一个对象数组吗?@Barmar不是不可能的。。很糟糕json@wim我的意思是JSON与可能的对象不对应。我知道你的意思,但你错了@Barmar我制作这个json时使用了一个函数,该函数可以将一些数据从pdf文件转换为json,这就是为什么它是一个糟糕的json。这就是为什么我问这个问题,因为我想修复它。它确实有效,非常感谢。但问题是,只有使用json.dumps()时,我才能将其保存为字符串。正如我所说,这将搞乱任何包含阿拉伯字符的json。我想我得想办法了。thanksPass
当您调用json.dumps
时,请确保_ascii=False
。它确实有效,非常感谢。但问题是,只有使用json.dumps()时,我才能将其保存为字符串。正如我所说,这将搞乱任何包含阿拉伯字符的json。我想我得想办法了。thanksPass在调用json.dumps
时,确保_ascii=False
。