I wanted to replace the below-highlighted string with just a {. Kindly share your thoughts
Strings between '{' and '}]' has to replaced with {
I have stored to below json to str to perform replace
{'preview': False, 'init_offset': 0, 'messages': [], 'fields': [{'name': 'dxx.jxx.lxx.sxx'}, {'name': 'dxxx.jxxx.operationName'}, {'name': 'dxxx.jxxx.txxx'}, {'name': 'dxxx.jxxx.log.payload.status'}], 'results': [{'dxxx.jxxx.log.startTime': '2021-06-07T05:44:46.817Z', 'dxxx.jxxx.operationName': 'testops', 'dxxx.jxxx.txxx': '87', 'dxxx.jxxx.log.payload.status': '200'}, {'dxxx.jxxx.log.startTime': '2021-06-06T22:29:28.966Z', 'dxxx.jxxx.operationName': 'testops', 'dxxx.jxxx.txxx': '56772655863572929', 'dxxx.jxxx.log.payload.status': '200'}, {'dxxx.jxxx.log.startTime': '2021-06-05T20:21:30.062Z', 'dxxx.jxxx.operationName': 'testops', 'dxxx.jxxx.txxx': '43', 'dxxx.jxxx.log.payload.status': '200'}, {'dxxx.jxxx.log.startTime': '2021-06-04T03:05:24.848Z', 'dxxx.jxxx.operationName': 'testops', 'dxxx.jxxx.txxx': '54', 'dxxx.jxxx.log.payload.status': '200'}, {'dxxx.jxxx.log.startTime': '2021-06-04T03:05:23.610Z', 'dxxx.jxxx.operationName': 'testops', 'dxxx.jxxx.txxx': '53', 'dxxx.jxxx.log.payload.status': '200'}, {'dxxx.jxxx.log.startTime': '2021-06-03T07:33:00.594Z', 'dxxx.jxxx.operationName': 'testops', 'dxxx.jxxx.txxx': '23', 'dxxx.jxxx.log.payload.status': '200'}], 'highlighted': {}}
Expected output:
{'results': [{'dxxx.jxxx.log.startTime': '2021-06-07T05:44:46.817Z', 'dxxx.jxxx.operationName': 'testops', 'dxxx.jxxx.txxx': '87', 'dxxx.jxxx.log.payload.status': '200'}, {'dxxx.jxxx.log.startTime': '2021-06-06T22:29:28.966Z', 'dxxx.jxxx.operationName': 'testops', 'dxxx.jxxx.txxx': '56772655863572929', 'dxxx.jxxx.log.payload.status': '200'}, {'dxxx.jxxx.log.startTime': '2021-06-05T20:21:30.062Z', 'dxxx.jxxx.operationName': 'testops', 'dxxx.jxxx.txxx': '43', 'dxxx.jxxx.log.payload.status': '200'}, {'dxxx.jxxx.log.startTime': '2021-06-04T03:05:24.848Z', 'dxxx.jxxx.operationName': 'testops', 'dxxx.jxxx.txxx': '54', 'dxxx.jxxx.log.payload.status': '200'}, {'dxxx.jxxx.log.startTime': '2021-06-04T03:05:23.610Z', 'dxxx.jxxx.operationName': 'testops', 'dxxx.jxxx.txxx': '53', 'dxxx.jxxx.log.payload.status': '200'}, {'dxxx.jxxx.log.startTime': '2021-06-03T07:33:00.594Z', 'dxxx.jxxx.operationName': 'testops', 'dxxx.jxxx.txxx': '23', 'dxxx.jxxx.log.payload.status': '200'}], 'highlighted': {}}
I have tried:
s = re.sub('^*}], ', '{', s)
print(s)
In brief, ^
matches beginning of line, *
matches "zero or more of the previous expression" ie "beginnings of line", though I don't think repetitions of ^
are well-defined. The remainder of the expression just matches literally.
If we can guess what you hoped for it to match, perhaps try
s = re.sub(r'^\{.*}], ', '{', s)
{
is a regex metacharacter, so it needs to be backslash-escaped to match literally.
Knowing the full anticipated output makes the question easier to solve. It appears as though you just want a couple of keys from your json/dict.
So if we have:
data_in = {
'preview': False,
'init_offset': 0,
'messages': [],
'fields': [
{'name': 'dxx.jxx.lxx.sxx'},
{'name': 'dxxx.jxxx.operationName'},
{'name': 'dxxx.jxxx.txxx'},
{'name': 'dxxx.jxxx.log.payload.status'}
],
'results': [
{'dxxx.jxxx.log.startTime': '2021-06-07T05:44:46.817Z', 'dxxx.jxxx.operationName': 'testops', 'dxxx.jxxx.txxx': '87', 'dxxx.jxxx.log.payload.status': '200'},
{'dxxx.jxxx.log.startTime': '2021-06-06T22:29:28.966Z', 'dxxx.jxxx.operationName': 'testops', 'dxxx.jxxx.txxx': '56772655863572929', 'dxxx.jxxx.log.payload.status': '200'},
{'dxxx.jxxx.log.startTime': '2021-06-05T20:21:30.062Z', 'dxxx.jxxx.operationName': 'testops', 'dxxx.jxxx.txxx': '43', 'dxxx.jxxx.log.payload.status': '200'},
{'dxxx.jxxx.log.startTime': '2021-06-04T03:05:24.848Z', 'dxxx.jxxx.operationName': 'testops', 'dxxx.jxxx.txxx': '54', 'dxxx.jxxx.log.payload.status': '200'},
{'dxxx.jxxx.log.startTime': '2021-06-04T03:05:23.610Z', 'dxxx.jxxx.operationName': 'testops', 'dxxx.jxxx.txxx': '53', 'dxxx.jxxx.log.payload.status': '200'},
{'dxxx.jxxx.log.startTime': '2021-06-03T07:33:00.594Z', 'dxxx.jxxx.operationName': 'testops', 'dxxx.jxxx.txxx': '23', 'dxxx.jxxx.log.payload.status': '200'}
],
'highlighted': {}
}
and we expect:
data_expected = {
'results': [
{'dxxx.jxxx.log.startTime': '2021-06-07T05:44:46.817Z', 'dxxx.jxxx.operationName': 'testops', 'dxxx.jxxx.txxx': '87', 'dxxx.jxxx.log.payload.status': '200'},
{'dxxx.jxxx.log.startTime': '2021-06-06T22:29:28.966Z', 'dxxx.jxxx.operationName': 'testops', 'dxxx.jxxx.txxx': '56772655863572929', 'dxxx.jxxx.log.payload.status': '200'},
{'dxxx.jxxx.log.startTime': '2021-06-05T20:21:30.062Z', 'dxxx.jxxx.operationName': 'testops', 'dxxx.jxxx.txxx': '43', 'dxxx.jxxx.log.payload.status': '200'},
{'dxxx.jxxx.log.startTime': '2021-06-04T03:05:24.848Z', 'dxxx.jxxx.operationName': 'testops', 'dxxx.jxxx.txxx': '54', 'dxxx.jxxx.log.payload.status': '200'},
{'dxxx.jxxx.log.startTime': '2021-06-04T03:05:23.610Z', 'dxxx.jxxx.operationName': 'testops', 'dxxx.jxxx.txxx': '53', 'dxxx.jxxx.log.payload.status': '200'},
{'dxxx.jxxx.log.startTime': '2021-06-03T07:33:00.594Z', 'dxxx.jxxx.operationName': 'testops', 'dxxx.jxxx.txxx': '23', 'dxxx.jxxx.log.payload.status': '200'}
],
'highlighted': {}
}
We can test that this simple comprehension does the trick for us:
data_out = {key:value for key, value in data_in.items() if key in ("results", "highlighted")}
isMatching = json.dumps(data_expected) == json.dumps(data_out)
print(f"data_out matches data_expected: { isMatching }")
Note that you will also need an:
import json
If you want to do that test above.
Note that if the only key you want is the results
key, then all you need is:
data_out = {"results": [item for item in data_in["results"]]}
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.