Python %字符的转义序列

Python %字符的转义序列,python,escaping,Python,Escaping,我有一个下面的代码,它工作得很好 a = 5 b = "%" print "Hello %d \%s" % (a ,b) 输出: $ python a.py Hello 5 \% 但是如果我试着用这种方式写代码 a = 5 print "Hello %d \%" % a 它给出了一个错误,它似乎是不为“%”工作的转义序列 File "a.py", line 2, in <module> print "Hello %d \%" % a ValueError: inco

我有一个下面的代码,它工作得很好

a = 5
b = "%"
print "Hello %d \%s" % (a ,b)
输出:

$ python a.py
Hello 5 \%
但是如果我试着用这种方式写代码

a = 5
print "Hello %d \%" % a
它给出了一个错误,它似乎是不为“%”工作的转义序列

  File "a.py", line 2, in <module>
    print "Hello %d \%" % a
ValueError: incomplete format
文件“a.py”,第2行,在
打印“Hello%d\%%”a
ValueError:格式不完整

更准确地说,在第二个程序中输入“%”字符是一种更好的方法。

是的,它被称为格式转义

>>> print 'hello %s %%' % 5
hello 5 %
你只需要使用2%

“%%”未转换任何参数,结果在 结果


是的,这叫做格式转义

>>> print 'hello %s %%' % 5
hello 5 %
你只需要使用2%

“%%”未转换任何参数,结果在 结果


使用字符串格式时(
“某些%s”%('string')
),必须转义
%
字符。要做到这一点,只需使用
%%

如果字符串未格式化,则不必这样做


请参阅关于字符串格式。

使用字符串格式(
“某些%s”%(“字符串”)
)时,必须转义
%
字符。要做到这一点,只需使用
%%

如果字符串未格式化,则不必这样做

请参阅关于字符串格式的说明。

使用:

这种字符串格式化方法是Python 3中的新标准,应该优先于新代码中的
%
格式

或双精度
%

print "Hello %d %%" % a
使用:

这种字符串格式化方法是Python 3中的新标准,应该优先于新代码中的
%
格式

或双精度
%

print "Hello %d %%" % a

请注意,
%
-格式有一些可能会产生令人惊讶的结果。您应该改用
str.format
,从这个角度来看,这更安全一些。特别是,如果在字符串中使用多种格式,则必须使用具有值的元组或映射。使用任何其他对象(即使是
列表
)都是“未定义的行为”(请参阅),范围从给出预期的输出到引发异常。请注意,
%
-格式有一些可能会给出令人惊讶的结果。您应该改用
str.format
,从这个角度来看,这更安全一些。特别是,如果在字符串中使用多种格式,则必须使用具有值的元组或映射。使用任何其他对象(即使是
列表
)都是“未定义的行为”(请参阅),范围从给出预期的输出到引发异常。要在新样式的格式中转义
'{'
'}
,同样的技巧也适用:
'{'.format()='{'
,以及转义
'{'
'}“
在新样式格式中,同样的技巧也适用:
”{{{.format()=='{'