簡體   English   中英

格式字符串中的可變數字位數

[英]variable number of digit in format string

這是編寫此格式化函數的簡潔方法:

def percent(value,digits=0):
    return ('{0:.%d%%}' % digits).format(value)

>>> percent(0.1565)
'16%'

>>> percent(0.1565,2)
'15.65%'

問題是格式化具有給定位數的數字,我不喜歡同時使用'%'運算符和格式方法。

我喜歡這一個:

'{0:.{1}%}'.format(value, digits)

測試:

>> '{0:.{1}%}'.format(0.1565, 0)
'16%'
>> '{0:.{1}%}'.format(0.1565, 2)
'15.65%'

*printf風格的字符串格式化做你想要的

>>> def percent(value, digits=0):
...     return '%.*f%%' % (digits, value * 100)
...
>>> percent(0.1565, 2)
'15.65%'

高級字符串格式(在PEP 3101中定義並記錄在7.1.3。格式字符串語法中 )似乎無法在一次傳遞中執行此操作。 (參見7.1.3.1。格式規范迷你語言precision僅為integer 。)

來自文檔

最小字段寬度(可選)。 如果指定為'*'(星號),則從值的元組的下一個元素讀取實際寬度,並且要轉換的對象在最小字段寬度和可選精度之后。

例:

def percent(value, digits=0):
    print '%.*f%%' % (digits, value*100)
>>> percent(0.1565, 2)
15.65%

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM