【问题标题】:python string adding backslash before single quotespython字符串在单引号前添加反斜杠
【发布时间】:2014-07-26 00:02:23
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: python string quotes


    【解决方案1】:

    解释

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

    解决方案

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

    【讨论】:

    • 顺便说一句,如果一个字符串包含单引号但没有双引号,repr 将在双引号内,以便于阅读。例如。 'mom\'s' -> "mom's"
    【解决方案2】:

    它只是在REPL 中转义。如果打印出来,会显示没有添加斜线:

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

    【讨论】:

    【解决方案3】:

    我找到了解决方案,它与 repr(string) 无关,正如@Aran-Fey 提到的,它与 API 和 Jsons 响应有关。

    正确的方法是您不返回字符串或 jsons 转储,而是返回您提到的 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)
    

    【讨论】:

    • 我认为你在回答不同的问题
    • 哦,你正在回答你自己的问题,你 posted as an answer。请不要发布问题作为答案。相反,您可以提出一个新问题并answer it yourself。
    猜你喜欢
    • 2016-08-19
    • 2010-10-13
    • 1970-01-01
    • 2013-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-03
    • 1970-01-01
    相关资源
    最近更新 更多