jon*_*man 332 python escaping python-2.7
我有以下代码
test = "have it break."
selectiveEscape = "Print percent % in sentence and not %s" % test
print(selectiveEscape)
Run Code Online (Sandbox Code Playgroud)
我想获得输出:
Print percent % in sentence and not have it break.
Run Code Online (Sandbox Code Playgroud)
实际发生了什么:
selectiveEscape = "Use percent % in sentence and not %s" % test
TypeError: %d format: a number is required, not str
Run Code Online (Sandbox Code Playgroud)
Nol*_*lty 580
>>> test = "have it break."
>>> selectiveEscape = "Print percent %% in sentence and not %s" % test
>>> print selectiveEscape
Print percent % in sentence and not have it break.
Run Code Online (Sandbox Code Playgroud)
Kar*_*mel 55
或者,从Python 2.6开始,您可以使用新的字符串格式(在PEP 3101中描述):
'Print percent % in sentence and not {0}'.format(test)
Run Code Online (Sandbox Code Playgroud)
当你的琴弦变得更复杂时,这尤其方便.
如果您使用的是Python 3.6或更高版本,则可以使用f-string:
>>> test = "have it break."
>>> selectiveEscape = f"Print percent % in sentence and not {test}"
>>> print(selectiveEscape)
... Print percent % in sentence and not have it break.
Run Code Online (Sandbox Code Playgroud)
您不能有选择地逃避%,因为%总是具有特殊含义,具体取决于以下字符.
在Python 的文档中,在该部分的第二个表的bottem中,它指出:
'%' No argument is converted, results in a '%' character in the result.
Run Code Online (Sandbox Code Playgroud)
因此你应该使用:
selectiveEscape = "Print percent %% in sentence and not %s" % (test, )
Run Code Online (Sandbox Code Playgroud)
(请注意将元组的expicit更改为参数%)
如果不知道上述内容,我会做到:
selectiveEscape = "Print percent %s in sentence and not %s" % ('%', test)
Run Code Online (Sandbox Code Playgroud)
凭借你显然已经拥有的知识.
| 归档时间: |
|
| 查看次数: |
318792 次 |
| 最近记录: |