我尝试了以下操作,但未能匹配Json中的对象
:\s*(\{[^\"]*\})
我想知道在Json中将对象类型替换为对象列表的方法。
以下是Json的示例:
{
"resourceType": "ChargeItem",
"id": "example",
"text": {
"status": "generated",
"session": "Done"
},
"identifier": [
{
"system": "http://myHospital.org/ChargeItems",
"value": "654321"
}
],
"definitionUri": [
"http://www.kbv.de/tools/ebm/html/01520_2904360860826220813632.html"
],
"status": "billable",
"code": {
"coding": [
{
"code": "01510",
"display": "Zusatzpauschale für Beobachtung nach diagnostischer Koronarangiografie"
}
]
}
}
我需要我转换为这种形式:
{
"resourceType": "ChargeItem",
"id": "example",
"text": [{
"status": "generated",
"session": "Done"
}],
"identifier": [
{
"system": "http://myHospital.org/ChargeItems",
"value": "654321"
}
],
"definitionUri": [
"http://www.kbv.de/tools/ebm/html/01520_2904360860826220813632.html"
],
"status": "billable",
"code": [{
"coding": [
{
"code": "01510",
"display": "Zusatzpauschale für Beobachtung nach diagnostischer Koronarangiografie"
}
]
}]
}
答案 0 :(得分:0)
这似乎是一些简单的转换:
首先,更改
"text": {
到
"text": [{
第二,更改
},
"identifier": [
到
}],
"identifier": [
第三,更改
"code": {
到
"code": [{
最后,改变
}
}
<EOF>
到
}]
}
<EOF>
但是,它可能并不像它看起来的那么简单,也就是说,如果identifer
部分并不总是存在,或者没有立即跟随text
部分,该怎么办?
正则表达式是执行此工作的不佳选择。最好将json文件读入本地Python数据结构,应用所需的更改,然后将json保存回该文件。
答案 1 :(得分:0)
使用多行正则表达式搜索的解决方案
>>> import re
>>> blocks = re.compile(r'(?ms)(.*)("text": )([{][^{}]+[}])(,.*"status": "billable"[^"]+)("code": )([{][^"]+"coding":[^]]+\]\s+\})')
>>> m = blocks.search(s)
>>> result = ""
>>> for i in range(1,len(m.groups()) + 1):
... if i not in (3,6):
... result += m.group(i)
... else:
... result += "[" + m.group(i) + "]"
...
>>> result += "\n}"