我想從一個變量中指定一個標準的二進制格式長度,但由於某種原因,它永遠不會工作。我在做格式錯誤或變量包含?python在一個字符串中的變量
comp.write("{0:%ib}".format(I) % num_bits)
ValueError: Invalid conversion specification
我想從一個變量中指定一個標準的二進制格式長度,但由於某種原因,它永遠不會工作。我在做格式錯誤或變量包含?python在一個字符串中的變量
comp.write("{0:%ib}".format(I) % num_bits)
ValueError: Invalid conversion specification
首先,這是錯誤的順序:
("{0:%ib}" % num_bits).format(I)
其次,是不是這樣做的方式!混合格式操作符的類型意味着你不知道它可以一起完成。你想:
"{:{}b}".format(I, num_bits)
,如果你真的想這樣做的兩個步驟:
"{{:{}b}}".format(num_bits).format(I)
的{{
和}}
被轉義,所以被轉換爲單一的大括號,第一.format
後。
你圓做插錯了。在傳遞給format
之前,您需要先解析%i
。這會工作:
comp.write(("{0:%ib}" % num_bits).format(I))
而且是相當可怕的,你可能想把它分成兩個:
fmt = "{0:%ib}" % num_bits
comp.write(fmt.format(I))
是否有在Python中的操作順序? – Marmstrong
你的意思是運營商優先權?當然,但這不相關。按照你的方式,'%'操作'format'調用的結果,而不是傳遞給它。 –
爲嵌套格式+1:'「{:0 {} b}」.format(I,num_bits)'。 – jfs
「{:0 {} b}」。格式(I,num_bits)是最好的答案。我忘了也包括前導零。 – Marmstrong