[英]How to handle regex string in JSON file with Python
我想在json文件中存儲一些正則表達式字符串,然后使用python解析json文件。 但是,由於正則表達式反斜杠在json中將被視為無效。 所以我該怎么辦。
{
"key" : "^https://www\.google\.com/search?.+",
"value" : "google"
}
正如您在上面看到的,作為正則表達式,一些句點(?。+)將是regex,有些則只是句點(。),但是,此json文件將不被視為有效。 那我該怎么辦。
謝謝!
您需要對正則表達式使用轉義反斜杠,然后再次對字符串處理器進行轉義:
>>> s = """{
... "key" : "^https://www\\\\.google\\\\.com/search?.+",
... "value" : "google"
... }"""
>>> json.loads(s)
{'key': '^https://www\\.google\\.com/search?.+', 'value': 'google'}
如果您采用另一種方法,即從包含正則表達式字符串的Python字典到JSON對象,則編碼器將為您處理此問題,但通常最好將正則表達式使用原始字符串:
>>> s = """{
... "key" : "^https://www\.google\.com/search?.+",
... "value" : "google"
... }"""
>>> json.dumps(s)
'"{\\n \\"key\\" : \\"^https://www\\\\.google\\\\.com/search?.+\\",\\n \\"value\\" : \\"google\\"\\n}"'
生成JSON字符串時,您需要轉義反斜杠。 無論您使用哪種工具生成JSON,都可能內置了該工具。例如,使用Python json模塊:
>>> print json.dumps({'asdf': r'\s+'})
{"asdf": "\\s+"}
請注意,輸出中有兩個反斜杠。 解析后,這些將成為一個反斜線。
為每個反斜杠再添加一個反斜杠。
str=str.replace("\", "\\");
在json使用之前,將上述代碼添加到代碼中。
{
"key": "^https://www\\.google\\.com/search?.+",
"value": "google"
}
有效的..!
希望能幫助到你...!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.