我怎样才能选择在Python字符串逃过百分比(%)?我怎样才能选择在Python字符串逃过百分比(%

2019-05-14 09:09发布

我有以下代码

test = "have it break."
selectiveEscape = "Print percent % in sentence and not %s" % test

print(selectiveEscape)

我想获得的输出:

Print percent % in sentence and not have it break.

到底发生了什么:

    selectiveEscape = "Use percent % in sentence and not %s" % test
TypeError: %d format: a number is required, not str

Answer 1:

>>> test = "have it break."
>>> selectiveEscape = "Print percent %% in sentence and not %s" % test
>>> print selectiveEscape
Print percent % in sentence and not have it break.


Answer 2:

或者,如Python 2.6中,你可以使用新的字符串格式化(在描述PEP 3101 ):

'Print percent % in sentence and not {0}'.format(test)

这是特别方便,因为你的字符串变得更加复杂。



Answer 3:

尝试使用%%打印%的迹象。



Answer 4:

你不能选择逃避% ,为%总是取决于以下字符有特殊的含义。

在文档的Python,在该部分中的第二个表的bottem,它规定:

'%'        No argument is converted, results in a '%' character in the result.

因此,你应该使用:

selectiveEscape = "Print percent %% in sentence and not %s" % (test, )

(请注意expicit变化的元组作为参数%

在不知道上面,我会做:

selectiveEscape = "Print percent %s in sentence and not %s" % ('%', test)

随着知识,你显然已经有了。



Answer 5:

如果格式化模板从文件中读取,你不能保证内容双打百分号,那么你可能有检测百分号并决定是否编程是一个占位符与否的开始。 然后解析器也应该认识样序列%d (以及可使用的其他字母),而且%(xxx)s等。

类似的问题可以用新的格式观察 - 文本可以包含花括号。



Answer 6:

我曾尝试不同的方法来打印一个插曲标题,看看他们是如何工作的。 这是不同的,当我使用乳胶。

它的工作原理,在一个典型的案例“%%”和“串” +“%”。

如果您使用的乳胶,它的工作用“字符串” +“\%”

因此,在一个典型的案例:

import matplotlib.pyplot as plt
fig,ax = plt.subplots(4,1)
float_number = 4.17
ax[0].set_title('Total: (%1.2f' %float_number + '\%)')
ax[1].set_title('Total: (%1.2f%%)' %float_number)
ax[2].set_title('Total: (%1.2f' %float_number + '%%)')
ax[3].set_title('Total: (%1.2f' %float_number + '%)')

与%标题的例子

如果我们用乳液:

import matplotlib.pyplot as plt
import matplotlib
font = {'family' : 'normal',
        'weight' : 'bold',
        'size'   : 12}
matplotlib.rc('font', **font)
matplotlib.rcParams['text.usetex'] = True
matplotlib.rcParams['text.latex.unicode'] = True
fig,ax = plt.subplots(4,1)
float_number = 4.17
#ax[0].set_title('Total: (%1.2f\%)' %float_number) This makes python crash
ax[1].set_title('Total: (%1.2f%%)' %float_number)
ax[2].set_title('Total: (%1.2f' %float_number + '%%)')
ax[3].set_title('Total: (%1.2f' %float_number + '\%)')

我们得到这样的: 以%和乳胶例如标题



文章来源: How can I selectively escape percent (%) in Python strings?