【问题标题】:python Variable in a string字符串中的python变量
【发布时间】:2013-09-24 10:19:01
【问题描述】:

我试图从一个变量中指定一个标准的二进制格式长度,但由于某种原因它永远不会起作用。我是在格式化错误还是变量包含?

comp.write("{0:%ib}".format(I) % num_bits)

ValueError:无效的转换规范

【问题讨论】:

    标签: python string variables formatting


    【解决方案1】:

    首先,它的顺序错误:

    ("{0:%ib}" % num_bits).format(I)
    

    其次,这不是这样做的方法!混合格式化运算符的类型意味着您不知道它可以一起完成。你想要:

    "{:{}b}".format(I, num_bits)
    

    如果您真的想分两步完成:

    "{{:{}b}}".format(num_bits).format(I)
    

    {{}} 被转义,因此在第一个 .format 之后转换为单大括号。

    【讨论】:

    • "{:0{}b}".format(I, num_bits) 是最佳答案。我也忘了包括前导零。
    【解决方案2】:

    您正在以错误的方式进行插值。您需要先解析%i,然后再将其传递给format。这会起作用:

    comp.write(("{0:%ib}" % num_bits).format(I))
    

    但是太可怕了,你可能想把它一分为二:

    fmt = "{0:%ib}" % num_bits
    comp.write(fmt.format(I))
    

    【讨论】:

    • python中有操作顺序吗??
    • 您的意思是运算符优先级吗?当然,但这无关紧要。按照您的方式,%format 调用的结果进行操作,而不是传递给它。
    猜你喜欢
    • 2016-05-23
    • 1970-01-01
    • 1970-01-01
    • 2021-03-14
    • 2014-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多