【问题标题】:python keyword string formatting with '%' confusing error : unsupported format character 'p'python关键字字符串格式与'%'混淆错误:不支持的格式字符'p'
【发布时间】:2015-01-22 13:22:50
【问题描述】:

我有以下设置

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

我不知道为什么。

【问题讨论】:

    标签: python string string-formatting


    【解决方案1】:

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

    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'
    

    【讨论】:

      【解决方案2】:

      您也可以使用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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-09-01
        • 1970-01-01
        • 2017-08-22
        • 1970-01-01
        • 2021-06-06
        • 2017-10-30
        • 1970-01-01
        • 2017-09-28
        相关资源
        最近更新 更多