当字符串包含正则表达式时,Python编码特殊的JSON字符?

当字符串包含正则表达式时,Python编码特殊的JSON字符?,python,json,regex,python-requests,Python,Json,Regex,Python Requests,有人知道如何让json.dumps正确编码包含正则表达式的字符串吗?或者,如果有一种替代方法来为JSON有效负载编码数据,而该有效负载不使用能够正确处理此问题的JSON.dumps 例如: import json MyString = 'regex "Network\sInformation:[\s\S]+?Workstation\sName:\t+(?<src_host>[^\r]+)"' data = {} data['MyString'] = MyString data['da

有人知道如何让json.dumps正确编码包含正则表达式的字符串吗?或者,如果有一种替代方法来为JSON有效负载编码数据,而该有效负载不使用能够正确处理此问题的JSON.dumps

例如:

import json
MyString = 'regex "Network\sInformation:[\s\S]+?Workstation\sName:\t+(?<src_host>[^\r]+)"'
data = {}
data['MyString'] = MyString
data['date'] = '2017-09-18T11:28:06'  
json_data = json.dumps(data)
print json_data

注意:我曾考虑过创建一个函数,该函数会发出一系列替换命令来手动编码,这是我目前的计划B,但我希望已经有一个解决方案/模块可以用来实现这一点。

您的正则表达式定义有缺陷,而不是JSON输出:

>>> MyString = 'regex "Network\sInformation:[\s\S]+?Workstation\sName:\t+(?<src_host>[^\r]+)"'
>>> MyString[-5:-4]
'\r'
>>> len(MyString[-5:-4])
1
>>> print(MyString[-5:-4])  # produces an empty line
>>> import json
>>> print(json.dumps(MyString))
"regex \"Network\\sInformation:[\\s\\S]+?Workstation\\sName:\\t+(?<src_host>[^\\r]+)\""
改为使用原始字符串文字:

MyString = r'regex "Network\sInformation:[\s\S]+?Workstation\sName:\t+(?<src_host>[^\r]+)"'
这两个字符将生成预期的JSON输出:

>>> MyString = 'regex "Network\sInformation:[\s\S]+?Workstation\sName:\t+(?<src_host>[^\r]+)"'
>>> MyString[-5:-4]
'\r'
>>> len(MyString[-5:-4])
1
>>> print(MyString[-5:-4])  # produces an empty line
>>> import json
>>> print(json.dumps(MyString))
"regex \"Network\\sInformation:[\\s\\S]+?Workstation\\sName:\\t+(?<src_host>[^\\r]+)\""
导入json >>>打印(json.dumps(MyString)) “regex\”网络\\s信息:[\\s\\s]+?工作站\\sName:\\t+(?[^\\r]+)\“”
>>> MyString = r'regex "Network\sInformation:[\s\S]+?Workstation\sName:\t+(?<src_host>[^\r]+)"'
>>> MyString[-6:-4]
'\\r'
>>> len(MyString[-6:-4])
2
>>> print(MyString[-6:-4])
\r
>>> import json
>>> print(json.dumps(MyString))
"regex \"Network\\sInformation:[\\s\\S]+?Workstation\\sName:\\t+(?<src_host>[^\\r]+)\""