我有一个包含引号的字符串,类似于这样:
string = "\"This is my mom's vase\", said Kevin."
问题是当我在Python中将其用作字符串时,它会在单引号之前添加反斜杠,如下所示:
>>> string
'"This is my mom\'s vase", said Kevin.'
>>>
为什么会发生这种情况,我该怎么办? (涉及 IT 技术)
您看到的是由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."
'"This is my mom\'s vase", said Kevin.'
print
字符串来确认这一点,该字符串输出了字符串的真实值:>>> print(string)
"This is my mom's vase", said Kevin.
没有什么需要解决的!你还在这里干什么?向上滚动并再次阅读解释!
'mom\'s'
-> "mom's"
- wjandrea这只是在REPL中逃脱了。如果你将其打印出来,就会显示它没有添加斜杠:
print(string)
# output: "This is my mom's vase", said Kevin.
我找到了解决方案,它与repr(string)无关,正如@Aran-Fey所提到的,它与API和Jsons响应有关。
正确的方法是不返回字符串或jsons dumps,而是返回响应,这是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)