簡體   English   中英

如何使用Python處理JSON文件中的正則表達式字符串

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM