python字元串格式化方法 format函數的使用

来源:https://www.cnblogs.com/huohuohuo1/archive/2018/06/08/9157766.html
-Advertisement-
Play Games

python從2.6開始支持format,新的更加容易讀懂的字元串格式化方法, 從原來的% 模式變成新的可讀性更強的 綜合舉例說明: 輸入: '{:>18,.2f}'.format(70305084.0) # :冒號+空白填充+右對齊+固定寬度18+浮點精度.2+浮點數聲明f 輸出:' 70,305 ...


python從2.6開始支持format,新的更加容易讀懂的字元串格式化方法, 從原來的% 模式變成新的可讀性更強的
  1. 花括弧聲明{}、用於渲染前的參數引用聲明, 花括弧里可以用數字代表引用參數的序號, 或者 變數名直接引用。
  2. 從format參數引入的變數名 、
  3. 冒號:、
  4. 字元位數聲明、
  5. 空白自動填補符 的聲明
  6. 千分位的聲明
  7. 變數類型的聲明: 字元串s、數字d、浮點數f
  8. 對齊方向符號 < ^ >
  9. 屬性訪問符中括弧 ?
  10. 使用驚嘆號!後接a 、r、 s,聲明 是使用何種模式, acsii模式、引用__repr__ 或 __str__
  11. 增加類魔法函數__format__(self, format) , 可以根據format前的字元串格式來定製不同的顯示, 如: ’{:xxxx}’  此時xxxx會作為參數傳入__format__函數中。 
    綜合舉例說明:
  1. 如: 千分位、浮點數、填充字元、對齊的組合使用:
輸入: '{:>18,.2f}'.format(70305084.0)     # :冒號+空白填充+右對齊+固定寬度18+浮點精度.2+浮點數聲明f 輸出:'     70,305,084.00'  
  1. 複雜數據格式化
輸入: data = [4, 8, 15, 16, 23, 42]             '{d[4]} {d[5]}'.format(d=data) 輸出: 23 42  
  1. 複雜數據格式化:
輸入:  class Plant(object):
    type = 'tree'
    kinds = [{'name': 'oak'}, {'name': 'maple'}]

  '{p.type}: {p.kinds[0][name]}'.format(p=Plant()) 輸出:tree: oak           分類舉例說明:  
  • 花括弧聲明{}、用於渲染前的參數引用聲明, 花括弧里可以用數字代表引用參數的序號, 或者 變數名直接引用。
        '{} {}'.format('one', 'two') '{1} {0}'.format('one', 'two')   Output two one     Setup
data = {'first': 'Hodor', 'last': 'Hodor!'}



Old

'%(first)s %(last)s' % data


New

'{first} {last}'.format(**data)


Output

Hodor Hodor!      
  • 從format參數引入的變數名 、
 
  • 冒號:、字元位數聲明、空白自動填補符 的聲明、千分位的聲明、變數類型的聲明: 字元串s、數字d、浮點數f 、對齊方向符號 < ^ >
'{:.5}'.format('xylophone')


Output

xylop         
'{:^10}'.format('test')


Output

   test     
'{:.{}}'.format('xylophone', 7)


Output

xylopho
'{:4d}'.format(42)


Output

  42
'{:06.2f}'.format(3.141592653589793)


Output

003.14  
'{:+d}'.format(42)


Output

+42   千分位、浮點數、填充字元、對齊的組合使用:   輸入: '{:>18,.2f}'.format(70305084.0)     # :冒號+空白填充+右對齊+固定寬度18+浮點精度.2+浮點數聲明f 輸出:'     70,305,084.00'    
  • 屬性訪問符中括弧 ?

Setup

person = {'first': 'Jean-Luc', 'last': 'Picard'}


New

'{p[first]} {p[last]}'.format(p=person)


Output

Jean-Luc Picard 

Setup

data = [4, 8, 15, 16, 23, 42]


New

'{d[4]} {d[5]}'.format(d=data)


Output

23 42  

Setup

class Plant(object):
    type = 'tree'
    kinds = [{'name': 'oak'}, {'name': 'maple'}]


New

'{p.type}: {p.kinds[0][name]}'.format(p=Plant())


Output

tree: oak    
  • 驚嘆號!限定訪問__repr__等魔法函數:

Setup

class Data(object):

    def __str__(self):
        return 'str'

    def __repr__(self):
        return 'repr'


Old

'%s %r' % (Data(), Data())


New

'{0!s} {0!r}'.format(Data())


Output

str repr    
  • 增加類魔法函數__format__(self, format) , 可以根據format前的字元串格式來定製不同的顯示, 如: ’{:xxxx}’  此時xxxx會作為參數傳入__format__函數中。 

Setup

class HAL9000(object):

    def __format__(self, format):
        if (format == 'open-the-pod-bay-doors'):
            return "I'm afraid I can't do that."
        return 'HAL 9000'


New

'{:open-the-pod-bay-doors}'.format(HAL9000())


Output

I'm afraid I can't do that.    
  • 時間日期的特例:

Setup

from datetime import datetime


New

'{:%Y-%m-%d %H:%M}'.format(datetime(2001, 2, 3, 4, 5))


Output

2001-02-03 04:05
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 來做一個這個界面 fieldset和legend標簽在企業中用到的非常少,在企業里的邊框都要求非常好看 ...
  • ref:https://blog.csdn.net/wuxiaobingandbob/article/details/78642020?fps=1&locationNum=1 http://www.cnblogs.com/imyalost/p/6792724.html http://www.cnbl ...
  • wframe不是控制項庫,也不是UI庫,她是一個微信小程式面向對象編程框架,代碼只有幾百行。她的主要功能是規範小程式項目的文件結構、規範應用程式初始化、規範頁面載入及授權管理的框架,當然,wframe也提供了一些封裝好了的函數庫,方便開發者調用。 wframe目前已實現的核心功能: 1. 應用程式初始 ...
  • define和typedef的區別 define是單純的字元替換,typedef是重新定義了新的類型 ...
  • Java面向對象的三大特性之繼承一:繼承的概念;二:類的繼承格式;三:為什麼需要繼承;四:繼承的特性;五:繼承的關鍵字; ...
  • def func1(seq1): dic={ 'num':0, 'string':0, 'space':0, 'other':0 } for line in seq1: if line.isdigit(): dic['num'] += 1 elif line.isalpha(): dic['stri ...
  • Java中的內部類一:什麼是內部類;二:Java 中的成員內部類;三:Java 中的靜態內部類;四:Java 中的方法內部類; ...
  • 就是想記錄一下 JSP中傳參的四種方法: 1、form表單 2、request.setAttribute();和request.getAttribute(); 3、超鏈接:<a herf="index.jsp"?a=a&b=b&c=c>name</a> 4、<jsp:param> 發生Referen ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...