我有一个包含这样的引号的字符串:
string = "\"This is my mom's vase\", said Kevin."
问题是当我在python中将它用作字符串时,它会在单引号之前添加一个反斜杠,如下所示:
>>> string
'"This is my mom\'s vase", said Kevin.'
>>>
为什么会发生这种情况,我该怎么办呢?
它只是在repl中逃脱了。如果您将其打印出来,则会显示没有添加斜杠:
print(string)
# output: "This is my mom's vase", said Kevin.
您所看到的是由repr
函数生成的字符串表示。 repr
以这样的方式输出字符串,使得它们是有效的python文字;换句话说,您可以将repr(string)
的输出复制/粘贴到python程序中,而不会出现语法错误:
>>> string
'"This is my mom\'s vase", said Kevin.'
>>> '"This is my mom\'s vase", said Kevin.' # it's valid python code!
'"This is my mom\'s vase", said Kevin.'
因为你的字符串包含单引号'
和双引号"
,所以python必须转义其中一个引号才能生成有效的字符串文字。与使用反斜杠转义双引号的方式相同:
"\"This is my mom's vase\", said Kevin."
Python改为选择转义单引号:
'"This is my mom\'s vase", said Kevin.'
当然,这两个字符串完全相同。那些反斜杠只用于逃避目的,它们实际上并不存在于字符串中。您可以通过print
ing字符串来确认这一点,该字符串输出字符串的实际值:
>>> print(string)
"This is my mom's vase", said Kevin.
没有什么可以解决的!你还在这做什么?向上滚动并再次阅读说明!
我有同样的问题,我正在阅读一个文本文件,其中包含一个html作为响应发送,当在邮递员测试时,html在保存到字符串变量时被搞砸了。这只发生在双引号“,单个正确返回,已经在这里尝试了所有python: write 'backslash double-quote' string into file
Txt文件
<html>
<body>
<table width='100%'>
<tbody><tr class="gridgray" bgcolor="#f5f5f5">
邮差GET
"<html><body><table width='100%'><tbody><tr class=\"gridgray\" bgcolor=\"#f5f5f5\">"
我找到了解决方案,它与repr(字符串)无关,正如@ Aran-Fey所提到的,它与API和Jsons响应有关。
正确的方法是你不返回字符串或json转储,而是响应你提到的http协议解释:\“(反斜杠每个字符串)。
解决方案是按如下方式进行http响应:
from flask import request, jsonify, make_response
from flask_restful import Resource
from flask_api import status
class employeeHiring(Resource):
def post(self):
#YOUR CODE ....
return make_response(jsonify({'status': 'success', 'my Dict': dict}), status.HTTP_201_CREATED)