python keyword string formatting with '%' confusing error : unsupported format character 'p'
python keyword string formatting with '%' confusing error : unsupported format character 'p'
我有以下设置
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
我不知道为什么。
您缺少一个关键元素:格式 type 指示符:
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'
您也可以使用 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
我有以下设置
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
我不知道为什么。
您缺少一个关键元素:格式 type 指示符:
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'
您也可以使用 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