2014-03-19 75 views
1

我想在json文件中存儲一些正則表達式字符串,然後使用python解析json文件。然而,正則表達式反斜槓在json中將被視爲無效。所以我該怎麼做。如何使用Python處理JSON文件中的正則表達式字符串

{ 
    "key" : "^https://www\.google\.com/search?.+", 
    "value" : "google" 
} 

正如你可以在上面看到,由於正則表達式,有的句號(?+)將正則表達式,有的將只是句號(。),但是,這JSON文件將不被認爲是有效的。所以我應該怎麼做。

謝謝!

+0

轉義您的角色請參閱:http://stackoverflow.com/questions/280435/escaping-regex-string-in-python?rq=1 –

回答

1

爲每個反斜槓添加一個更多的反斜槓。

 str=str.replace("\", "\\"); 

將以上代碼添加到json使用前的代碼中!

 { 
      "key": "^https://www\\.google\\.com/search?.+", 
      "value": "google" 
     } 

其有效的一個..!

HOpe它有幫助...!

+0

謝謝Sidharthan,我認爲你的解決方案是乾淨的,而且我不需要使用replace(),只需使用\\而不是\在文件中。 –

1

您需要使用逃脫正則表達式的反斜槓,然後再逃避他們的字符串處理器:

>>> s = """{ 
...  "key" : "^https://www\\\\.google\\\\.com/search?.+", 
...  "value" : "google" 
... }""" 
>>> json.loads(s) 
{'key': '^https://www\\.google\\.com/search?.+', 'value': 'google'} 

如果你走另一條路,我。即從包含一個正則表達式字符串JSON對象Python字典,編碼器將您處理該問題,但它是使用原始字符串正則表達式一般一個好主意:

>>> s = """{ 
...  "key" : "^https://www\.google\.com/search?.+", 
...  "value" : "google" 
... }""" 
>>> json.dumps(s) 
'"{\\n \\"key\\" : \\"^https://www\\\\.google\\\\.com/search?.+\\",\\n \\"value\\" : \\"google\\"\\n}"' 
1

你需要躲避反斜槓時生成JSON字符串。無論使用何種工具來生成JSON可能有內置例如,使用Python的json模塊:

>>> print json.dumps({'asdf': r'\s+'}) 
{"asdf": "\\s+"} 

請注意,輸出中有兩個反斜槓。解析後,這些將成爲一個反斜槓。

+0

如果我需要從文件讀取json,如何使用r'\ s + ' –

+0

@Jerry:如果您正在從文件中讀取JSON,那麼您的所有內容都已經處理完畢,或者數據源已損壞。 – user2357112

相關問題