python格式化輸出:f-string格式化輸出

2021-02-19 黑客技術和網絡安全

作者丨黃偉呢 

來源丨凹凸數據

1、f-string簡介

  python3.6引入了一種新的字符串格式化方式:f-tring格式化字符串。從%s格式化到format格式化再到f-string格式化,格式化的方式越來越直觀,f-string的效率也較前兩個高一些,使用起來也比前兩個簡單一些。① f-string用大括{ }表示被替換欄位,其中直接填入替換內容即可。
>>> name = "Huang Wei"
>>> f"Hello, my name is {name}"
'Hello, my name is Huang Wei'

>>> num = 2
>>> f"I have {num} apples"
'I have 2 apples'

>>> price = 95.5
>>> f"He has {price}$"
'He has 95.5$'

① f-string的大括號{ }可以填入表達式或調用函數,Python會求出其結果並填入返回的字符串內。
>>> f"They have {2+5*2} apples"
'They have 12 apples'

>>> name = "Huang Wei"
>>> f"my name is {name.lower()}"
'my name is huang wei'

>>> import math
>>> f"Π的值為{math.pi}"
'Π的值為3.141592653589793'

② f-string中使用lambda匿名函數:可以做複雜的數值計算
>>> aa = 123.456
>>> f"{(lambda x:x*5-2)(aa):.2f}"
'615.28'

>>> bb = 8
>>> cc = 2
>>> f"{(lambda x,y:x+y)(bb,cc)}"
'10'

說明:注意語法格式的寫法,第一個小括號表示的是lambda表達式,第二個小括號表示給lambda表達式傳入參數。① f-string大括號內使用的引號不能和大括號外的引號定界符引號衝突,需根據情況靈活切換使用單引號、雙引號、單三引號、雙三引號。
>>> f'I am {"Huang Wei"}'
'I am Huang Wei'

>>> f'''I am {'Huang Wei'}'''
'I am Huang Wei'

>>> f"""I am {'Huang Wei'}"""
'I am Huang Wei'

>>> f"""I am {"Huang Wei"}"""
'I am Huang Wei'

>>> f'I am {'Huang Wei'}'
  File "<stdin>", line 1
    f'I am {'Huang Wei'}'
                 ^
SyntaxError: invalid syntax

注意:只要大括號內外的引號不同,就沒有問題。但是大括號中只能是但引號和 雙引號 ,大括號外的引號定界符引號可以使用單引號、雙引號、單三引號、雙三引號。② 大括號外的引號還可以使用\轉義,但大括號內不能使用\轉義。
>>> f"he\'ll go to {'shang hai'}"
"he'll go to shang hai"

>>> f"""he introduces himself {"I\'m Tom"}"""
  File "<stdin>", line 1
SyntaxError: f-string expression part cannot include a backslash

>>> f"""he introduces himself {"I'm Tom"}"""
"he introduces himself I'm Tom"

① f-string大括號外如果需要顯示大括號,則應輸入連續兩個大括號{{ }};大括號內需要引號,使用引號即可。
>>> f"5{'{apples}'}"
'5{apples}'

>>> f"{{5}}{'apples'}"
'{5}apples'

  概念:當我們指定了字符串最終的長度的時候,如果現有的字符串沒有那麼長,那麼我們就用某種字符(填充字符)來填滿這個長度,這就是「填充」。
>>> name = "Huang Wei"
>>> f"{name:>20}"
'           Huang Wei'

>>> f"{name:<20}"
'Huang Wei           '

>>> f"{name:^20}"
'     Huang Wei      '

>>> name = "Huang Wei"
>>> f"{name:_>20}"
'___________Huang Wei'

>>> f"{name:_<20}"
'Huang Wei___________'

>>> f"{name:_^20}"
'_____Huang Wei______'

注意:填充分為左填充、右填充、居中填充。左填充表示在字符串左側填充,右填充表示在字符串右側填充,居中填充表示在字符串左右兩側對稱填充。>表示左填充,<表示右填充,^表示居中填充。記憶方法:括號口朝左邊,就表示左填充;括號口朝右邊,就表示右填充。2.6 f-string數字符號相關格式描述符:僅針對數值有效
>>> a = 12
>>> b = -25
>>> f"{a:+}"
'+12'
>>> f"{b:+}"
'-25'

>>> f"{a:-}"
'12'
>>> f"{b:-}"
'-25'

>>> f"{a: }"
' 12'
>>> f"{b: }"
'-25'

2.7 f-string寬度與精度相關格式描述符:保留小數點位數
>>> a = 123.456
# 只指定width
>>> f"{a:10}"
'   123.456'
# 只指定0width
>>> f"{a:010}"
'000123.456'
# 使用width.precision
>>> f"{a:8.1f}"
'   123.5'
>>> f"{a:8.2f}"
'  123.46'
>>> f"{a:.2f}"
'123.46'
# 在width後面,直接加f,表示補足小數點後的位數至默認精度6
>>> f"{a:2f}"
'123.456000'

  當需要格式化的數據類型是「字符串」的時候,才會發生截斷。截斷的含義,以及發生截斷的條件,都可以可參考我文章開頭提到的文章。
>>> a = "Hello"
# 當發生截斷的時候,如果不指定填充符,默認使用空格填充
>>> f"{a:10.3}"
'Hel       '
# 在發生截斷的時候,使用指定的填充符
>>> f"{a:_>10.3}"
'_______Hel'
>>> f"{a:_<10.3}"
'Hel_______'

2.9 f-string針對date、datetime和time對象,進行年月日、時分秒等信息提取
>>> from datetime import *
# today()返回本地時間的一個date對象
>>> a = date.today()
>>> a
datetime.date(2020, 2, 1)
>>> f"{a:%Y-%m-%d}"
'2020-02-01'

說明:針對date、datetime和time對象,進行年月日、時分秒等提取,我們直接可以使用datetime模塊中的方法就可以解決。這裡講述這個知識點,只是為了說明f-string處理date、datetime和time對象的一種可行思路。關於datatime模塊的講解,可以參考連載文章:https://blog.csdn.net/weixin_41261833/article/details/103895079使用%、format、f-string列印九九乘法表
for i in range(1,10):
    for j in range(1,i+1):
        print("%s*%s=%s" % (j,i,j*i),end=" ")
    print("\n")

for i in range(1,10):
    for j in range(1,i+1):
        print("{0}*{1}={2}".format(j,i,j*i),end=" ")
    print("\n")

for i in range(1,10):
    for j in range(1,i+1):
        print(f"{j}*{i}={j*i}",end=" ")
    print("\n")

在看點這裡好文分享給更多人↓↓

相關焦點

  • Python 炫技操作:五種 Python 轉義表示法
    舉個例子>>> msg = "hello\013world\013hello\013python">>> print(msg)hello     world          hello               python>>> 是不是有點神奇
  • 技巧分享:U盤小知識,格式化U盤選擇exFAT格式
    在對U盤進行格式化操作時,選擇文件系統時,會出現FAT32
  • Python基礎模塊:日期與時間模塊@time+datetime
    終於,回家之後準備好好學習一下,從python基礎模塊開始,今天為大家準備的是python的日期與時間處理模塊time和datetime。目錄:1. time模塊1.1.strftime(format[, tuple]) -> stringConvert a time tuple to a string according to a format specification.
  • python基礎學習教程:Python基礎語法
    python 中多行注釋使用三個單引號(''')或三個雙引號(""")。Print 輸出print 默認輸出是換行的,如果要實現不換行需要在變量末尾加上逗號 ,實例 x="a"y="b"print xprint y print '----'print
  • Mac高危漏洞:電腦格式化後還可被駭客控制
    點擊「IDC圈」可快速關注~根據OSX保安專家Pedro Vilaca的發現,一個針對舊款Mac的新漏洞會讓駭客在機器從睡眠模式喚醒後奪取它的控制權,即使機器經格式化後也逃不了完成後,惡意「rootkit」就難以被發現或刪除,即使格式化硬碟也不能完成解決。但因為整個入侵的步驟複雜,所以駭客不大可能用來大量攻擊OSX使用者,但選擇特定對象來攻擊卻不是問題。
  • 關於C++ std::string類內存布局的探究
    一個指向內存地址為 0x 00 00 7f fc 2e fb 40 e0 的ZooAnimal指針,將從這個地址(首地址)開始,涵蓋一段大小為sizeof(ZooAnimal)的內存空間,來表示這個指針指向的對象在內存中的二進位存儲
  • 學習Python的利器:內置函數dir()和help()
    (其他輸出結果略去)>>> import math>>> help(math.sin)  #查看標準庫函數的幫助文檔Help on built-in function sin in module math:sin(...)
  • Python生成一維碼,二維碼
    from StringIO import StringIO>>> i = StringIO()>>> ean =Code39("0987654321", writer=imagewriter, add_checksum=False)>>> ean.write(i)>>> f
  • 一段有魔性的視頻,看完整個人生觀都被格式化咯
    聽起來,好像就連混世屌絲看完都會把人生觀格式化,對生活的熱愛膨脹得很。
  • 「舊手機換菜刀」衡水的你一定在街上聽到過,你知道手機格式化後仍可迅速恢復嗎?
    已被格式化的手機,數據能否被恢復?回收後的手機能否洩露用戶的個人信息?帶著這些疑問,燕趙都市網記者在市場上展開了調查。  邢臺市區太行路與團結大街交叉口,周圍散布著多個住宅小區和一個城中村,每天人流量巨大。很多手機回收商也正是看中了這一點,每天都會有回收手機的商販騎著自行車穿梭在附近小區內。
  • Python爬蟲實戰:爬取天氣數據的實例詳解
    在本篇文章裡小編給大家整理的是一篇關於python爬取天氣數據的實例詳解內容,有興趣的朋友們學習下。
  • 黃智賢:誰輸出了病毒?
    不管是指控中國輸出病毒,還是製造病毒。當然,美國主導了全球輿論。而川普跟彭佩奧每日一牽託,無日不把病毒跟中國連結。但,如果把事實跟日期連結,我們會發現,美國跟新冠病毒,有無法拆開的關係。42019年6月,在馬裡蘭州,美國軍方的生物實驗室德特裡克堡周遭,一個老人小區,開始有大量不明肺炎病患。ABC電視特別報導。
  • 魔獸世界:不好意思,DPS高低還真是衡量輸出職業的唯一標準
    近期,有玩家低聲啜泣著講述了自己在副本中的悲慘遭遇,說自己在副本中辛辛苦苦打斷,不停地控制小怪,為了不麻煩治療,各種保命技能到了CD就用,整個副本在尾王之前,DPS輸出水平倒數第一
  • 胃學很根本:論飲食文化輸出
    一旦中國大陸的飲食文化向外輸出。就會有覆蓋性的效果。品種之豐富,口味之全面,憑藉著東西海拔高差和南北緯度差的極大化的優勢,帶來的食材完整性,中國的飲食成為了一個包羅萬象的完整體系。其實無論是日本還是韓國。其實都是中國飲食文化的分支。日本的清酒和韓國的燒酒,在中國的各類酒品面前就是渣渣。韓國的泡菜……我的個天,不知道咋描述,在中國那能叫菜嗎?
  • 湘西南首家民營勞務輸出公司在武岡成立 找工作更方便
    掌上武岡訊(記者 關楊博 劉鐵軍)9月6日,作為湘西南首家民營勞務輸出公司,武岡市獵才人力資源有限責任公司應運而生,為全市緩解農村貧困、促進農村經濟發展增添了「助推劑」。20世紀90年代以後,武岡農民大量外出打工,逐步形成了一支極具影響力的勞務輸出大軍。通過了解農村勞務輸出的現狀、正視其對農村經濟發展產生的影響,武岡市獵才人力資源有限責任公司成立前就致力於研究和解決勞務輸出的各種難題,並攜手人社部門積極有效地引導、鼓勵和支持貧困地區農民的適度勞務輸出。
  • 谷歌申請輸出韓國地圖數據 韓媒稱或威脅國家安全
    據韓國媒體8月9日報導,針對日前谷歌公司請求韓國地圖數據輸出境外的申請,主管部門韓國國土交通部屬下國土地理信息院表示,將於本月12日召開會議,就是否接受谷歌公司的這一申請進行討論。日前,谷歌公司向韓國政府提起申請,希望允許其向境外數據中心輸出谷歌韓國上的韓國地圖數據。
  • python黑知識:python本體
    講述python的實現本體,版本,構建時間,構建工具和構建參數python的實現有很多種,如果想研究一下它語言本身一些機制的實現,可能需要看原始碼,那麼,就需要找到相應的實現,分支和版本。目前使用的python實現,根據python實現存在有這幾種CPython, Stackless Python, MicroPython, CLPython, Cython, IronPython, Jython, Pyjs, PyPy, Numba, Shed Skin Nuitka ,可以說是讓人眼花繚亂。