我有一个基于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?
答案 0 :(得分:0)
我在您的上一个示例中假设您在控制台中输入了data
或print repr(data)
?这将打印字符串的表示,其中反斜杠字符编码为\\
,以区别于用于转义的单个\
运算符。有关详细信息,请参阅this question。
如果您使用print data
打印字符串本身,您应该会看到报价仅按预期反斜杠进行转义。