[英]Remove unicode string and spaces from json response using python
我將數據發布到 REST API 作為響應,我收到的數據是 json 響應。 此響應具有 unicode 個字符。 我嘗試了很多方法從我的 json 數據中刪除 unicode 字符,但沒有任何效果:( 在刪除 unicode 字符后,我正在驗證模式。以下是我的代碼片段:
import json
import logging
from jsonschema import validate
if __name__ == '__main__':
schema = {
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"SOURCE": {
"type": "string"
},
"TIMESTAMP": {
"type": "string"
},
"TAGERRORS": {
"type": "array",
"items": [
{
"type": "object",
"properties": {
"TAGNAME": {
"type": "string"
},
"ERROR": {
"type": "string"
}
},
"required": [
"TAGNAME",
"ERROR"
]
}
]
}
},
"required": [
"SOURCE",
"TIMESTAMP",
"TAGERRORS"
]
}
response_dict ='"{\\u000d\\u000a \\"SOURCE\\": \\"APPDEV\\",\\u000d\\u000a \\"TIMESTAMP\\": \\"2022-04-19 12:29:27\\",\\u000d\\u000a \\"TAGERRORS\\": []\\u000d\\u000a}"'
response_dict = response_dict.replace("\\u000d\\u000a\\s*", "")
print(response_dict)
my_json = json.loads(response_dict)
# validate(instance=my_json, schema=schema)
# print(my_json)
response_dict = response_dict.replace("\ \ \\s*", "")
不起作用並給出以下結果。
"{ \"SOURCE\": \"APPDEV\", \"TIMESTAMP\": \"2022-04-19 12:29:27\", \"TAGERRORS\": [] }"
另外,我嘗試了以下正則表達式來刪除 unicode 個字符,但它在模式驗證期間失敗了。
import re
def removeunicode(text):
text = re.sub(r'\\[u]\S\S\S\S[s]', "", text)
text = re.sub(r'\\[u]\S\S\S\S', "", text)
return text
my_json = json.loads(removeunicode(response_dict))
你能幫忙解決這個問題嗎? 謝謝。
它是雙 JSON 編碼的。 只需json.loads
兩次響應即可修復它,但如果您可以修復上游問題:
# From OP's example
>>> response_dict ='"{\\u000d\\u000a \\"SOURCE\\": \\"APPDEV\\",\\u000d\\u000a \\"TIMESTAMP\\": \\"2022-04-19 12:29:27\\",\\u000d\\u000a \\"TAGERRORS\\": []\\u000d\\u000a}"'
>>> print(response_dict) # This is valid JSON
"{\u000d\u000a \"SOURCE\": \"APPDEV\",\u000d\u000a \"TIMESTAMP\": \"2022-04-19 12:29:27\",\u000d\u000a \"TAGERRORS\": []\u000d\u000a}"
>>> json.loads(response_dict)
'{\r\n "SOURCE": "APPDEV",\r\n "TIMESTAMP": "2022-04-19 12:29:27",\r\n "TAGERRORS": []\r\n}'
>>> json.loads(json.loads(response_dict))
{'SOURCE': 'APPDEV', 'TIMESTAMP': '2022-04-19 12:29:27', 'TAGERRORS': []}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.