json.dumps修改了我的HTML内容转义

时间:2015-08-11 11:24:45

标签: python string escaping quotes

我有一个基于REST的应用程序执行POST请求。我有一个新的端点,需要上传带有转义引号的HTLM文件(即在#34;字符前面)。

Python使用引号""对于代码中的字符串,所以这有点棘手,我尝试了许多变种试图保持我的HTML内容与转义引号,失败。所以这里是源HTML,只是一个提取(我使用三引号来在字符串中使用引号):

htmlScript = """?xml version=\"1.0\" encoding=\"UTF-8\"?"""

print htmlScript?xml version="1.0" encoding="UTF-8"?

然后将HTML内容传递到名为postData的字典变量中,其中HTML看起来仍然很好:

postData = {'transactionScript': '?xml version="1.0" encoding="UTF-8"?', 'alertsEnabled': 0, 'interval': 300, 'testName': 'Valerio API_2015-08-11 13:05:02.644245', 'timeLimit': 30, 'agents': [{'agentId': 4107}, {'agentId': 58}]}

然后我需要像使用我的应用程序的其他端点一样使用json.dumps:

data=json.dumps(postData)

这是问题所在,结果是前面带有双反斜杠的引号:

print data
'{"transactionScript": "?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?", "alertsEnabled": 0, "interval": 300, "testName": "Valerio API_2015-08-11 13:05:02.644245", "timeLimit": 30, "agents": [{"agentId": 4107}, {"agentId": 58}]}'

问题:如何在json.dumps之后获取单引号转义的HTML?

1 个答案:

答案 0 :(得分:0)

我在您的上一个示例中假设您在控制台中输入了dataprint repr(data)?这将打印字符串的表示,其中反斜杠字符编码为\\,以区别于用于转义的单个\运算符。有关详细信息,请参阅this question

如果您使用print data打印字符串本身,您应该会看到报价仅按预期反斜杠进行转义。