格式化python字符串的一部分

时间:2012-02-26 17:53:46

标签: python string format

我正在使用python 2.7 我在python中写了一些查询

q = '''
select * from users where user_name = %(user_name)s and  user_email = %(user_email)s
'''

我想分两步格式化字符串 类似的东西:

q2 = q % {'user_name':'david'}
q3 = q2 % {'user_email':'sss@sss.com'}

我写的例子不起作用。 python抛出KeyError 还有其他选择来执行这些任务吗?

2 个答案:

答案 0 :(得分:7)

使用适当的数据库API。

也就是说,如果你知道第一遍中会省略哪些键,你可以这样做:

>>> "%(a)s and %%(b)s" % {'a': 1}
'1 and %(b)s'
>>> _ % {'b': 2}
'1 and 2'

答案 1 :(得分:4)

感谢您的回答@katrielalex。我一直在尝试使用字符串.format()方法(python2.6 +)做类似的事情。你的回答引导我提出以下建议。

>>> s="{a} and {{b}}"
'{a} and {{b}}'
>>> s.format( a = 1 )
'1 and {b}'
>>> _.format( b = 2 )
'1 and 2' 

我希望它可以帮助所有想要使用新功能的人。