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

Mat*_*ren 3 python string string-formatting

我有以下设置

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

cred_template='-id=%(admin_id) -pa=%(admin_password)'
Run Code Online (Sandbox Code Playgroud)

当我尝试

cred_template % cred_dict
Run Code Online (Sandbox Code Playgroud)

我明白了

ValueError: unsupported format character 'p' (0x70) at index 17
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚为什么.

Mar*_*ers 7

您缺少一个关键元素:格式化类型指示符:

cred_template='-id=%(admin_id)s -pa=%(admin_password)s'
#                             ^                      ^
Run Code Online (Sandbox Code Playgroud)

该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'
Run Code Online (Sandbox Code Playgroud)