python字符串在单引号之前添加反斜杠

问题描述 投票:0回答:2

我有一个包含这样的引号的字符串:

string = "\"This is my mom's vase\", said Kevin."

问题是当我在python中将它用作字符串时,它会在单引号之前添加一个反斜杠,如下所示:

>>> string
'"This is my mom\'s vase", said Kevin.'
>>>

为什么会发生这种情况,我该怎么办呢?

python string quotes
2个回答
2
投票

它只是在repl中逃脱了。如果您将其打印出来,则会显示没有添加斜杠:

print(string)
# output: "This is my mom's vase", said Kevin.

0
投票

说明

您所看到的是由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.'

当然,这两个字符串完全相同。那些反斜杠只用于逃避目的,它们实际上并不存在于字符串中。您可以通过printing字符串来确认这一点,该字符串输出字符串的实际值:

>>> print(string)
"This is my mom's vase", said Kevin.

解决方案

没有什么可以解决的!你还在这做什么?向上滚动并再次阅读说明!


0
投票

我有同样的问题,我正在阅读一个文本文件,其中包含一个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\">"

0
投票

我找到了解决方案,它与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)
© www.soinside.com 2019 - 2024. All rights reserved.