簡體   English   中英

python字符串在單引號前添加反斜杠

[英]python string adding backslash before single quotes

我有一個字符串,其中包含這樣的引號:

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

問題是當我將它用作 python 中的字符串時,它會在單引號前添加一個反斜杠,如下所示:

>>> string
'"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字符串來確認這一點,它輸出字符串的真實值:

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

解決方案

沒有什么可以解決的! 你還在這里做什么? 向上滾動並再次閱讀說明!

它只是在REPL 中逃脫了。 如果你打印出來,它會顯示沒有添加斜線:

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

我遇到了同樣的問題,我正在讀取一個文本文件,其中包含要作為響應發送的html,在郵遞員處進行測試時,將html保存到字符串變量時會被弄亂。 這僅在雙引號“時發生,單引號已正確返回,已經在這里嘗試過一切python:也將'反斜杠雙引號'字符串寫入文件

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(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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM