Python 在JSON中使用正则表达式时正确转义(尝试创建spaCy模式匹配文件)

Python 在JSON中使用正则表达式时正确转义(尝试创建spaCy模式匹配文件),python,json,regex,spacy,Python,Json,Regex,Spacy,如何获取此字符串的JSON以接受还包含特殊字符(“\”)的正则表达式?我试过一些方法,但似乎无法奏效。我试图创建一个spaCy模式jsonl文件,但由于这个regx和特殊字符,它一直在这一行上呕吐。只有这样的情况是行不通的。显然是用户错误,我似乎不知道如何正确地转义它,以便它能够正确地解析。如有任何意见或帮助,将不胜感激 For this part (?i)SER+-\d+ I have tried escaping (?i)SER+-\\d+ or (?i)SER+-\\\d+ but it

如何获取此字符串的JSON以接受还包含特殊字符(“\”)的正则表达式?我试过一些方法,但似乎无法奏效。我试图创建一个spaCy模式jsonl文件,但由于这个regx和特殊字符,它一直在这一行上呕吐。只有这样的情况是行不通的。显然是用户错误,我似乎不知道如何正确地转义它,以便它能够正确地解析。如有任何意见或帮助,将不胜感激

For this part (?i)SER+-\d+ I have tried escaping (?i)SER+-\\d+ or (?i)SER+-\\\d+ but it doesn't work. 

您应该使用
r
前缀声明字符串文字,并使用双反斜杠定义正则表达式转义序列:

导入json
s=r'{“标签”:“产品”,“模式”:[{“文本”:{“正则表达式”:“(?i)SER+-\\d+“}}]}”
印刷品
#=>{“标签”:“产品”,“模式”:[{“文本”:{“正则表达式”:“(?i)SER+-\\d+”}}]}
y=json.loads
打印(y)
#=>{'label':'PRODUCT','pattern':[{'TEXT':{'REGEX':'(?i)SER+-\\d+'}]}
打印(y[“模式”][0][“文本”][“正则表达式”])
#=>(?i)SER+-\d+
看。我相信您确实想要
“模式”:[{“文本”:{“REGEX”:“(?I)SER+-\\d+“}}}]
,如果您认为您还需要一个嵌套的
文本
,只需重新添加即可


请注意,您在打印
y
值时看到的双反斜杠实际上是一个单反斜杠,这就是为什么我添加了
print(y[“pattern”][0][“TEXT”][“REGEX”])
行来证明它。

s='{“label”:“PRODUCT”,“pattern”:[{“TEXT”:{“TEXT”:{“REGEX”:“(?I)SER+-\\\d+“}}}}}}}}}}?(我猜你错过了一个结尾
})你想用[{“TEXT”:{“TEXT”:{“REGEX”:?谢谢@Wiktor。做到了。
import json

s = '{"label":"PRODUCT", "pattern": [{"TEXT": {"TEXT": {"REGEX": "(?i)SER+-\d+"}}]}'

print(s)
# parse x:
y = json.loads(s)