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

时间:2018-08-22 01:07:28

标签: python python-3.x python-3.6

在Python 3.6中格式化字符串的结果中包括一对反斜杠会遇到一些麻烦。请注意,#1和#2产生相同的不需要的结果,但是#3导致太多的反斜杠,这是另一个不需要的结果。

1

t = "arst '{}' arst"
t.format(d)
>> "arst '2017-34-12' arst"

2

t = "arst \'{}\' arst"
t.format(d)
>> "arst '2017-34-12' arst"

3

t = "arst \\'{}\\' arst"
t.format(d)
>> "arst \\'2017-34-12\\' arst"

我正在寻找看起来像这样的最终结果:

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

3 个答案:

答案 0 :(得分:2)

您的第三个示例是正确的。您可以print进行确认。

>>> 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"

答案 1 :(得分:0)

在字符串前面加上“ r”,以将其声明为字符串文字

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

答案 2 :(得分:0)

您被输出误导了。参见:Quoting backslashes in Python string literals

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]: