Python的f-string使用技巧
Python很早就引入了一種稱(chēng)為 f-string 的字符串格式化方法,它代表格式化字符串字面值。多年過(guò)去了,f-string 也成為了python 中應(yīng)用最廣泛的字符串格式化方法。這比其他字符串格式化方法更快,更易讀、易用,下面將介紹相關(guān)使用技巧。
1. 調(diào)試模式
首先就是 f-string 的調(diào)試功能,這可以讓我們使用{variable = }代替編寫(xiě)"variable = ",如下面代碼所示。這樣可以節(jié)省大量時(shí)間和精力,并使代碼看起來(lái)更整潔。
在 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)試模式減少了代碼量,同時(shí)輸出的內(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é)計(jì)數(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é)計(jì)數(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è)有一個(gè)像蘋(píng)果市值那樣大的數(shù)字,你可以使用:,,這里的逗號(hào),就是分隔符?;蛘呦胱?f-string 打印出一個(gè)百分比值,可以使用:.2%告訴 Python 設(shè)置 2 位小數(shù)并在字符串末尾添加一個(gè)百分號(hào)。
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)建一個(gè)示例日期時(shí)間值。就像在應(yīng)用程序中格式化日期一樣,可以在 f-string 中定義你想要的格式,例如:<date_format>
下面將一個(gè) UTC 日期時(shí)間格式化為:
沒(méi)有微秒
僅日期
僅時(shí)間
帶上午/下午的時(shí)間
24 小時(shí)格式
import datetime
today = datetime.datetime.utcnow()
print(f"datetime : {today}\n")
print(f"date time: {today:%m/%d/%Y %H:%M:%S}") # 沒(méi)有微秒
print(f"date: {today:%m/%d/%Y}") # 僅日期
print(f"time: {today:%H:%M:%S.%f}") # 僅時(shí)間
print(f"time: {today:%H:%M:%S %p}") # 時(shí)間帶上上午/下午
print(f"time: {today:%H:%M}") # 24小時(shí)制時(shí)間
輸出:
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
還可以使用格式化選項(xiàng)做更多事情,下面是如何從日期中獲取星期幾和一年中的第幾天,還有計(jì)算已經(jīng)過(guò)了一年的多少天。
# 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}" # 獲取本年度已過(guò)去時(shí)間(百分比)
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.對(duì)齊
如果你希望將變量打印在特定位置,可以使用對(duì)齊方式!
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
注意第一個(gè) print 中的number:n。這里的n表示從單詞 “is” 開(kāi)始打印變量number的寬度(包括數(shù)字本身的寬度),還可以選擇進(jìn)行左對(duì)齊、居中對(duì)齊或右對(duì)齊。
在left:>20中,打印結(jié)果共占用 20 字符,字符串靠右打印,左側(cè)填充空格。
在center:^20中,打印結(jié)果共占用 20 字符,且字符串位于中間。由于字符串 "center text!" 有 12 個(gè)字符,左右兩側(cè)各填充 4 個(gè)空白字符。
如果將三個(gè)字符串及其格式化選項(xiàng)放在一起,將有一個(gè)寬度為60的空間來(lái)放置左、中、右字符串變量。
5.f-string中引號(hào)使用存在的問(wèn)題
① f-string大括號(hào)內(nèi)使用的引號(hào)不能和大括號(hào)外的引號(hào)定界符引號(hào)沖突,需根據(jù)情況靈活切換使用單引號(hào)、雙引號(hào)、單三引號(hào)、雙三引號(hào)。
>>> 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注意:只要大括號(hào)內(nèi)外的引號(hào)不同,就沒(méi)有問(wèn)題。但是大括號(hào)中只能是但引號(hào)和 雙引號(hào) ,大括號(hào)外的引號(hào)定界符引號(hào)可以使用單引號(hào)、雙引號(hào)、單三引號(hào)、雙三引號(hào)。
② 大括號(hào)外的引號(hào)還可以使用\轉(zhuǎn)義,但大括號(hào)內(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中大括號(hào)使用存在的問(wèn)題
① f-string大括號(hào)外如果需要顯示大括號(hào),則應(yīng)輸入連續(xù)兩個(gè)大括號(hào){{ }};大括號(hào)內(nèi)需要引號(hào),使用引號(hào)即可。
>>> f"5{'{apples}'}"
'5{apples}'
>>> f"{{5}}{'apples'}"
'{5}apples'到此這篇關(guān)于Python的f-string使用技巧的文章就介紹到這了,更多相關(guān)Python f-string內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- python中f字符串f-string用法詳解
- python語(yǔ)法學(xué)習(xí)print中f-string用法示例
- Python中str.format()和f-string的使用
- Python格式化字符串f-string簡(jiǎn)介
- Python格式化字符串f-string的使用教程
- 在Python中f-string的幾個(gè)技巧,你都知道嗎
- Python 中 f-Strings 的作用
- Python 的 f-string 可以連接字符串與數(shù)字的原因解析
- python f-string式格式化聽(tīng)語(yǔ)音流程講解
- Python格式化字符串f-string概覽(小結(jié))
相關(guān)文章
python (logging) 日志按日期、大小回滾的操作
這篇文章主要介紹了python (logging) 日志按日期、大小回滾的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-03-03
快速掌握python權(quán)限功能設(shè)計(jì)實(shí)戰(zhàn)指南
在處理權(quán)限控制時(shí),裝飾器能幫助我們以一種統(tǒng)一且簡(jiǎn)潔的方式管理不同用戶對(duì)系統(tǒng)資源的訪問(wèn)權(quán)限,本文將通過(guò)幾個(gè)簡(jiǎn)單的示例逐步展示如何利用Python裝飾器實(shí)現(xiàn)從基礎(chǔ)到復(fù)雜的權(quán)限控制功能2024-01-01
sklearn.metrics 中的f1-score簡(jiǎn)介
這篇文章主要介紹了sklearn.metrics 中的f1-score簡(jiǎn)介,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-05-05
基于Python實(shí)現(xiàn)一個(gè)圖片拆分工具
這篇文章主要為大家詳細(xì)介紹了如何基于Python實(shí)現(xiàn)一個(gè)圖片拆分工具,可以根據(jù)需要的行數(shù)和列數(shù)進(jìn)行拆分,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2025-07-07
Pycharm下載pyinstaller報(bào)錯(cuò):You?should?consider?upgrading?via
這篇文章主要給大家介紹了關(guān)于Pycharm下載pyinstaller報(bào)錯(cuò):You?should?consider?upgrading?via?the?'python?-m?pip?install?--upgrade?pip'?command的解決方法,需要的朋友可以參考下2022-02-02
win10下python2和python3共存問(wèn)題解決方法
在本篇文章里小編給大家整理了關(guān)于win10下python2和python3共存問(wèn)題解決方法,有興趣的朋友們參考下。2019-12-12

