How to enable% in string formats in Python 2.7?

I am trying to add %to a string using string formats.

I am trying to get the following result:

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

Try 1:

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

Error:

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

Try 2:

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

Error:

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

How to include %in a formatted string?

+4
source share
4 answers

To include a percentage %in the string that will be used for the printf style string format, just exit by %including double percentage%%

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

( Docs )

+10
source

"%"; .

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

"%" python, "%" , "%" .

, ")" a.append.; -)

+6

just put% there, no need to set a variable

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

conclusion

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

+5
source

You can avoid the percent sign by doubling it.

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

Output

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

However, I think a clearer use of the method is format:

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

Source: https://habr.com/ru/post/1666343/


All Articles