Python的f-string使用技巧
Python很早就引入了一種稱為 f-string 的字符串格式化方法,它代表格式化字符串字面值。多年過去了,f-string 也成為了python 中應(yīng)用最廣泛的字符串格式化方法。這比其他字符串格式化方法更快,更易讀、易用,下面將介紹相關(guān)使用技巧。
1. 調(diào)試模式
首先就是 f-string 的調(diào)試功能,這可以讓我們使用{variable = }
代替編寫"variable = "
,如下面代碼所示。這樣可以節(jié)省大量時間和精力,并使代碼看起來更整潔。
在 f-string 的調(diào)試中,還可以執(zhí)行數(shù)學(xué)運(yùn)算,就像在最后一行中看到的那樣。
x = 10 y = 20 print(f"x = {x}, y = {y}") # 原方式 print(f"{x = }, {y = }") # 調(diào)試模式 # math operations print(f"{x * y = }")
輸出:
x = 10, y = 20
x = 10, y = 20
x * y = 200
可以看到使用調(diào)試模式減少了代碼量,同時輸出的內(nèi)容是一致的。
2.格式化數(shù)字
可以用數(shù)字進(jìn)行各種格式化/轉(zhuǎn)換,下面是一些示例:
設(shè)置小數(shù)位數(shù)(精度):使用
:.nf
,其中n
是小數(shù)位數(shù)十六進(jìn)制轉(zhuǎn)換
二進(jìn)制轉(zhuǎn)換
八進(jìn)制轉(zhuǎn)換
科學(xué)計數(shù)法
使用前導(dǎo)零填充數(shù)字:使用
:0n
,其中n
是總字符數(shù)
number = 420 # decimal places # 設(shè)置精度 print(f"number: {number:.2f}") # hex conversion # 十六進(jìn)制轉(zhuǎn)換 print(f"hex: {number:#0x}") # binary conversion # 二進(jìn)制轉(zhuǎn)換 print(f"binary: {number:b}") # octal conversion # 八進(jìn)制轉(zhuǎn)換 print(f"octal: {number:o}") # scientific notation # 科學(xué)計數(shù)法 print(f"scientific: {number:e}") # total number of characters # 填充前導(dǎo)0 print(f"Number: {number:09}")
number: 420.00
hex: 0x1a4
binary: 110100100
octal: 644
scientific: 4.200000e+02
Number: 000000420
假設(shè)有一個像蘋果市值那樣大的數(shù)字,你可以使用:,
,這里的逗號,
就是分隔符?;蛘呦胱?f-string 打印出一個百分比值,可以使用:.2%
告訴 Python 設(shè)置 2 位小數(shù)并在字符串末尾添加一個百分號。
apple_marketcap = 2.626 * 10e12 print(f"{apple_marketcap = :,}") # comma separator percentage = 10.394394 print(f"{percentage = :.2%}") # percentage
輸出:
apple_marketcap = 26,260,000,000,000.0
percentage = 1039.44%
3.日期格式化
如果想格式化日期,可以創(chuàng)建一個示例日期時間值。就像在應(yīng)用程序中格式化日期一樣,可以在 f-string 中定義你想要的格式,例如:<date_format>
下面將一個 UTC 日期時間格式化為:
沒有微秒
僅日期
僅時間
帶上午/下午的時間
24 小時格式
import datetime today = datetime.datetime.utcnow() print(f"datetime : {today}\n") print(f"date time: {today:%m/%d/%Y %H:%M:%S}") # 沒有微秒 print(f"date: {today:%m/%d/%Y}") # 僅日期 print(f"time: {today:%H:%M:%S.%f}") # 僅時間 print(f"time: {today:%H:%M:%S %p}") # 時間帶上上午/下午 print(f"time: {today:%H:%M}") # 24小時制時間
輸出:
datetime : 2022-09-13 05:44:17.546036
date time: 09/13/2022 05:44:17
date: 09/13/2022
time: 05:44:17.546036
time: 05:44:17 AM
time: 05:44
還可以使用格式化選項做更多事情,下面是如何從日期中獲取星期幾和一年中的第幾天,還有計算已經(jīng)過了一年的多少天。
# Locale's appropriate date and time representation print(f"locale appropriate: {today:%c}") # weekday print(f"weekday: {today:%A}") # 獲取當(dāng)前日期是星期幾 # day of the year print(f"day of year: {today:%j}") # 獲取當(dāng)前日期是一年中的第幾天 # how far are we into the year? day_of_year = f"{today:%j}" # 獲取本年度已過去時間(百分比) print(f"progress % year: {int(day_of_year)/365 * 100:.2f}%")
輸出:
locale appropriate: Tue Sep 13 05:44:17 2022
weekday: Tuesday
day of year: 256
progress % year: 70.14%
4.對齊
如果你希望將變量打印在特定位置,可以使用對齊方式!
number = 4 print(f"number is {number:4}") # width of 10 # numbers for number in range(1, 5): print(f"the number is {number:{number}}") left = "left text" center = "center text!" right = "right text" print(f"{left:>20}") # left align print(f"{center:^20}") # center align print(f"{right:<20}") # right align print(f"{left : <20}{center : ^20}{right : >20}")
輸出:
number is 4
the number is 1
the number is 2
the number is 3
the number is 4
left text
center text!
right text
left text center text! right text
注意第一個 print 中的number:n
。這里的n
表示從單詞 “is” 開始打印變量number
的寬度(包括數(shù)字本身的寬度),還可以選擇進(jìn)行左對齊、居中對齊或右對齊。
在left:>20
中,打印結(jié)果共占用 20 字符,字符串靠右打印,左側(cè)填充空格。
在center:^20
中,打印結(jié)果共占用 20 字符,且字符串位于中間。由于字符串 "center text!" 有 12 個字符,左右兩側(cè)各填充 4 個空白字符。
如果將三個字符串及其格式化選項放在一起,將有一個寬度為60的空間來放置左、中、右字符串變量。
5.f-string中引號使用存在的問題
① f-string大括號內(nèi)使用的引號不能和大括號外的引號定界符引號沖突,需根據(jù)情況靈活切換使用單引號、雙引號、單三引號、雙三引號。
>>> 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
注意:只要大括號內(nèi)外的引號不同,就沒有問題。但是大括號中只能是但引號和 雙引號 ,大括號外的引號定界符引號可以使用單引號、雙引號、單三引號、雙三引號。
② 大括號外的引號還可以使用\轉(zhuǎn)義,但大括號內(nèi)不能使用\轉(zhuǎn)義。
>>> 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-string大括號外如果需要顯示大括號,則應(yīng)輸入連續(xù)兩個大括號{{ }};大括號內(nèi)需要引號,使用引號即可。
>>> f"5{'{apples}'}" '5{apples}' >>> f"{{5}}{'apples'}" '{5}apples'
到此這篇關(guān)于Python的f-string使用技巧的文章就介紹到這了,更多相關(guān)Python f-string內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python中人臉圖像特征提取方法(HOG、Dlib、CNN)簡述
這篇文章主要介紹了Python中人臉圖像特征提取方法(HOG、Dlib、CNN)簡述,需要的朋友可以參考下2021-08-08Python中函數(shù)的基本定義與調(diào)用及內(nèi)置函數(shù)詳解
這篇文章主要給大家介紹了關(guān)于Python中函數(shù)的基本定義與調(diào)用及內(nèi)置函數(shù)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用Python具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-05-05python dataframe 輸出結(jié)果整行顯示的方法
今天小編就為大家分享一篇python dataframe 輸出結(jié)果整行顯示的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-06-06Python使用re模塊實(shí)現(xiàn)okenizer(表達(dá)式分詞器)
這篇文章主要介紹了Python使用re模塊實(shí)現(xiàn)okenizer,我們這里講解用正則表達(dá)式構(gòu)建簡單的表達(dá)式分詞器(tokenizer),它能夠?qū)⒈磉_(dá)式字符串從左到右解析為標(biāo)記(tokens)流,需要的朋友可以參考下2022-04-04基于Python實(shí)現(xiàn)繪制簡單動圖的示例詳解
動畫是一種高效的可視化工具,能夠提升用戶的吸引力和視覺體驗(yàn),有助于以富有意義的方式呈現(xiàn)數(shù)據(jù)可視化,本文的主要介紹在Python中兩種簡單制作動圖的方法,需要的可以了解下2023-10-10python ceiling divide 除法向上取整(或小數(shù)向上取整)的實(shí)例
今天小編就為大家分享一篇python ceiling divide 除法向上取整 (或小數(shù)向上取整)的實(shí)例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-12-12