如何在格式化的python字符串中转义单个反斜杠?

如何在格式化的python字符串中转义单个反斜杠?,python,python-3.x,python-3.6,Python,Python 3.x,Python 3.6,在Python3.6中,在格式化字符串的结果中包含一对反斜杠时遇到一些问题。请注意#1和#2会产生相同的不想要的结果,但#3会导致太多反斜杠,这是另一个不想要的结果 1. 2. 3. 我在寻找这样的最终结果: >> "arst \'2017-34-12\' arst" 你的第三个例子是正确的。您可以打印以确保这一点 >>> print(t.format(d)) arst \'2017-34-12\' arst 您在控制台中看到的实际上是字符串

在Python3.6中,在格式化字符串的结果中包含一对反斜杠时遇到一些问题。请注意#1和#2会产生相同的不想要的结果,但#3会导致太多反斜杠,这是另一个不想要的结果

1. 2. 3. 我在寻找这样的最终结果:

>> "arst \'2017-34-12\' arst"

你的第三个例子是正确的。您可以
打印
以确保这一点

>>> print(t.format(d))
arst \'2017-34-12\' arst
您在控制台中看到的实际上是字符串的表示。您确实可以使用
repr
获得它

print(repr(t.format(d)))
"arst \\'2017-34-12\\' arst"
#     ^------------^---Those are not actually there
齿隙用于转义特殊字符。因此,在字符串文本中,必须像这样避免反弹

"This is a single backlash: \\"
尽管如果希望字符串的类型完全相同,请使用r字符串

r"arst \'{}\' arst"

在字符串前面放一个“r”,将其声明为字符串文字

t = r"arst \'{}\' arst"

你被输出误导了。见:


第三个是你想要的。您将看到结果的
repr()
,它显示了需要在Python中键入什么才能获得该字符串,包括转义。实际字符串只包含一个反斜杠,如您通过
print(t.format(d))
所见。一个和两个都已转义。如果你想看到它的字面意思,那么你必须包括两个撇号,例如,
“arst'{}”arst,“yousaid\”。格式(d)。因为它是
`和“的混合体,所以需要逃逸。如果所有的内部都是”,而外部都是”,那么就不需要逃逸。另外,如果您所有的文件都是相同的,那么它会将一个文件转换为另一个文件,以便可读
"This is a single backlash: \\"
r"arst \'{}\' arst"
t = r"arst \'{}\' arst"
In [8]: t = "arst \\'{}\\' arst"

In [9]: t
Out[9]: "arst \\'{}\\' arst"

In [10]: print(t)
arst \'{}\' arst

In [11]: print(t.format('21-1-2'))
arst \'21-1-2\' arst

In [12]: