如何在Python 2.7中包含字符串格式的%?

时间:2017-01-10 08:02:01

标签: python python-2.7 list string-formatting

我正在尝试使用字符串格式将%附加到字符串中。

我想获得以下输出:

a : [" name like '%FTa0213' "]

尝试1:

a = [ ] 
b = {'by_name':"FTa0213"}
a.append(" name like "%" %s' " %b['by_name'])
print "a :",a

错误:

a.append(" name like "%" %s' " %b['by_name'])
TypeError: not all arguments converted during string formatting

尝试2:

a = [ ] 
b = {'by_name':"FTa0213"}
c = "%"
a.append(" name like '{0}{1}' ".format(c,b['by_name'])
print "a :",a

错误:

 print "a :",a
        ^
SyntaxError: invalid syntax

如何在格式化的字符串中加入%

4 个答案:

答案 0 :(得分:10)

要将一个百分比%包含在将用于printf样式字符串格式的字符串中,只需通过包含双倍%

来转义%%
a = []
b = {'by_name': "FTa0213"}
a.append(" name like %%%s' " % b['by_name'])
print "a :", a

Docs

答案 1 :(得分:6)

在您第一次尝试时,您使用“%”的方式是错误的;下面的代码可以在您第一次尝试时使用。

a.append( "name like %%%s" % b['by_name'])

由于“%”在python字符串中是特殊的,所以你需要在真正的“%”之前添加一个“%”来逃避。

在您的第二次尝试中,您的打印件没有任何问题,您忘记了")"行中的a.append。 ; - )

答案 2 :(得分:5)

只需将%放在那里,无需设置变量

a = [ ] 
b = {'by_name':"FTa0213"}
a.append(" name like '%{}' ".format(b['by_name']))
print "a :",a

输出

  

a:["名称如'%FTa0213' "]

答案 3 :(得分:3)

你可以通过加倍来逃避百分号。

let info = Reflect.get(ITest, 'foo');

if (info.isReadOnly()) { ... }

<强>输出

a = [] 
b = {'by_name': "FTa0213"}
a.append(" name like '%%%s' " % b['by_name'])
print "a :", a

但是,我认为使用a : [" name like '%FTa0213' "] 方法更清楚:

format