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
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...