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

How to include % in string formats in Python 2.7?

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

我正在尝试获得以下输出:

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

如何在我的格式化字符串中包含 %

要将百分比 % 包含到将用于 printf 样式字符串格式的字符串中,只需通过包含双百分比 %%[=15= 来转义 % ]

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

(Docs)

您可以将百分号加倍来​​转义它。

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

输出

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

不过,我觉得用format的方法更清楚:

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

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

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

由于“%”在python字符串中比较特殊,所以需要在真正的“%”前加一个“%”进行转义。

在你的第二次尝试中,你的打印没有任何错误,你在你的 a.append 行中忘记了一个 ")"。 ;-)

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

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

输出是

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