python关键字字符串格式与'%'混淆错误:不支持的格式字符'p'

时间:2015-01-22 13:22:50

标签: python string string-formatting

我有以下设置

cred_dict={'admin_id':'user','admin_password':'pass'}

cred_template='-id=%(admin_id) -pa=%(admin_password)'

当我尝试

cred_template % cred_dict

我得到了

ValueError: unsupported format character 'p' (0x70) at index 17

我无法找出原因。

2 个答案:

答案 0 :(得分:7)

您缺少一个关键元素:格式类型指标:

cred_template='-id=%(admin_id)s -pa=%(admin_password)s'
#                             ^                      ^

s表示您要将值格式化为字符串。如果没有这些指标,Python会不断查找类型,并找到字母p(来自-pa),而且这不是有效的类型指示符。

演示:

>>> cred_dict={'admin_id':'user','admin_password':'pass'}
>>> cred_template='-id=%(admin_id)s -pa=%(admin_password)s'
>>> cred_template % cred_dict
'-id=user -pa=pass'

答案 1 :(得分:1)

您还可以使用str.format,您可能会发现它更容易且不易出错:

cred_dict={'admin_id':'user','admin_password':'pass'}    
cred_template='-id={admin_id} -pa={admin_password}'
print(cred_template.format(**cred_dict))

-id=user -pa=pass