背景
字符串格式化的主要使用場景是讓變量打印出來,讓人看著美觀、易于查看。有時會直接print出來;有時會把這些內容寫到文件里面,也就是進行日志記錄。比如日志文件,設置好格式,后期在查詢問題時,就可以快速定位。
字符串格式化就類似于手機APP界面一樣,UI、排版設計都是為了使人機交互更加直觀,內容讓人看起來更美觀、更舒服。
字符串格式化方法
-
方法 1
在 python 2.6 之前,利用 百分號% 占位符,進行格式化
>>> name = '張三'
>>> print('哈嘍,%s'%name)
哈嘍,張三
-
方法 2 ---------- 現階段使用最多的方法
Python2.6 引入,性能比 % 更強大,字符串的 format 方法
>>> name = '張三'
>>> '哈嘍,{}'.format(name)
'哈嘍,張三'
-
方法 3 ---------- 推薦使用的方法
為了進一步簡化格式化方法,Eric Smith 在2015年提交了 PEP 498 -- Literal String Interpolation 提案。字符串開頭加上一個字母 f ,是在 Python3.6 新加入的字符串格式化方法
>>> name = '張三'
>>> f'哈嘍,{name}'
'哈嘍,張三'
推薦大家用最新的方法
推薦方法常規用法
設定浮點數精度
需要加一個 :(冒號)再加一個 .(英文句號)然后跟著小數點位數最后以f(float)結尾
num = 3.1415926 #山巔一寺一壺酒
print(f'圓周率保留兩位小數為:{num:.2f}')
#圓周率保留兩位小數為:3.14
數字格式化為百分數
方法與浮點數格式化類似,但是要用%代替結尾的f
a = 1
b = 3
c = a / b
print(f'百分數為:{c:%}')
#百分數為:33.333333%
print(f'百分數保留兩位小數為:{c:.2%}')
#百分數保留兩位小數為:33.33%
格式化 datetime 對象
支持的格式詳見官方文檔:
https://docs.python.org/3/library/datetime.html#strftime-and-strptime-format-codes
import datetime
now = datetime.datetime.now()
print(f'{now:%Y-%m-%d %H:%M:%S}')
#2021-01-19 16:44:32
字符串前補零
{var:0len}方法來進行字符串補零,len是最終返回字符串的長度
num = 123
print(f"{num:05}")
#00123
字符串居中
想要實現字符串居中,可以通過 var:^N
的方式。其中var是你想要打印的變量,N是字符串長度。如果N小于var的長度,會打印全部字符串。
test = 'hello world'
print(f'{test:^20}')
# hello world
print(f'{test:*^20}')
#****hello world*****
print(f'{test:^2}')
#hello world
進制轉換
print(f'{7:b}')
#111
bases = {"b": "bin",
"o": "oct",
"x": "hex",
"X": "HEX",
"d": "decimal"}
for n in range(1,21):
#print(n)
for base,desc in bases.items():
print(f'{desc}:{n:5{base}}',end=' '*5)
print()
進制轉換
參考文章
- https://miguendes.me/73-examples-to-help-you-master-pythons-f-strings
- https://mp.weixin.qq.com/s/0F06lMbJSqN2msX4bNl2Aw
歷史相關文章
以上是自己實踐中遇到的一些問題,分享出來供大家參考學習,歡迎關注微信公眾號:DataShare ,不定期分享干貨