为什么我在 python 字符串中得到一个反斜杠

Why I get a backslash in python string

我正在学习盲注sql。这是我脚本的一部分:

...
datas = {"username":"admin","password":"\'or pass like \"x%\" --"}
res = requests.post(url,data=datas).content
...

"password":后面的字符串应该以单引号开头,所以打印的时候我希望是''or pass like "x%" --'这样的东西(其实我不确定看到这个是否可以,python显然将双引号更改为单引号)。但是我得到 '\'or pass like "x%" --'.

当您在 python 中编写字符串时,您可以选择 "write them with double quotes"'write them with single quotes'。您只需要转义与您用于字符串的引号相匹配的引号。因此,'This "is" a valid string',但要将这些双引号更改为单引号,'You \'need\' to do this'。所以,在你的字符串中,你正确地转义了双引号,因为你有一个双引号字符串,但你不需要转义单引号。

不过,没关系,因为\'仍然被python正确解释;它只是将其打印为转义字符,因此您知道它是字符 ' 而不是字符串的结尾。

>>> "\'\""
'\'"'
>>> print("\'\"")
'"