[英]How to properly escape reserved regex characters in JSON?
我有一個JSON文件,其中包含我想在我的python代碼中使用的一些正則表達式。 當我嘗試在JSON文件中轉義保留的正則表達式字符時出現問題。 當我運行python代碼時,它無法處理json文件並拋出異常。
我已經調試了代碼並得出結論,它在調用json.loads(ruleFile.read())
時失敗了。 顯然只有一些字符可以在JSON中轉義,並且點不是其中之一導致語法錯誤。
try:
with open(args.rules, "r") as ruleFile:
rules = json.loads(ruleFile.read())
for rule in rules:
rules[rule] = re.compile(rules[rule])
except (IOError, ValueError) as e:
raise Exception("Error reading rules file")
{
"Rule 1": "www\.[a-z]{3,10}\.com"
}
Traceback (most recent call last):
File "foo.py", line 375, in <module>
main()
File "foo.py", line 67, in main
raise Exception("Error reading rules file")
Exception: Error reading rules file
如何解決此JSON語法問題?
反斜杠需要在JSON中進行轉義。
{
"Rule 1": "www\\.[a-z]{3,10}\\.com"
}
從這里 :
JSON中保留以下字符,必須正確轉義才能在字符串中使用:
- 退格鍵用\\ b替換
- 形式進料被替換為\\˚F
- 換行符替換為\\ n
- 回車符用\\ r \\ n替換
- Tab替換為\\ t
- 雙引號替換為“
- 反斜杠替換為\\\\
規則是首先在正確的字典中使用正確的字符串。 並且\\
將在Python中逃脫。
所以你最初應該寫:
rules = {"Rule 1": r"www\.[a-z]{3,10}\.com"}
然后,您可以輕松地將其轉換為JSON字符串:
print(json.dumps(rules, indent=4))
{
"Rule 1": "www\\.[a-z]{3,10}\\.com"
}
您現在知道如何格式化包含正則表達式的json文件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.