詳解Python中的字符串格式化
什么是字符串格式化,為什么需要這樣做?
我們有時候刷抖音/B站看到封面很好看,但是進入直播發(fā)現(xiàn),不過如此!
想必主播通過某種方式把輸出轉(zhuǎn)換為讀者想看的內(nèi)容。
是不是大概懂了什么是格式化和格式化的必要性了!
僅僅類比,我們程序的格式化,并沒有那么過份!1輸出還是1,只是人類更好讀懂了。
而不像網(wǎng)絡(luò)主播那樣稍微格式化(工程挺大)從1變成了0。
畢竟程序不能欺騙開發(fā)者。
必要性:輸出為更好的格式化,方便開發(fā)者和用戶讀懂輸出。
程序中都有哪些格式化?
網(wǎng)上說有三種,四種,未來還可能會增加其他庫。
學委開發(fā)過多種語言,大概總結(jié)如下兩個大類:
- 字符串占位符替換
- 字符串關(guān)鍵字替換
下面看看代碼
占位符格式化
第一種%占位符格式化
python中我們最常見的是'%‘ 這類占位符號
str = "hello" "this is a string: %s" % str "this is a string: %s, %s" % (str, str)
上面我們觀察一下,可以發(fā)現(xiàn)輸出中‘%s'被替換為了'hello';
另一個是多個‘%s'的替換是用一個元組,按照對應(yīng)下標來替換。
格式化基本上都可以使用'%s'來完成。
好,懂了這個,我們繼續(xù)看看下面的代碼:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2021/10/30 10:13 上午
# @Author : LeiXueWei
# @CSDN/Juejin/Wechat: 雷學委
# @XueWeiTag: CodingDemo
# @File : string_format.py
# @Project : hello
import sys
first = "持續(xù)學習"
second = "持續(xù)開發(fā)"
slogan = first + second
print(slogan)
banner = "*" * 16
print(banner)
slice = slogan[2:4]
print(slice)
print(""""學習" in slogan : %s""" % ("學習" in slogan))
print(""""不學習" not in slogan : %s""" % ("不學習" not in slogan))
print(r"""打印\n換行被當做普通字符輸出了!""")
# 以上我們都可以看到%,很多次代碼都有說到這個,但是并沒有過多解釋
print("%s" % slogan) # 最常用了%s 格式化字符串
# print("%c"%'ccc')#TypeError: %c requires int or char
print("%c" % 'c') # %c 通常用來強制檢測待輸出的字符串必須長度為1
print("%c" % '雷') # %c 通常用來強制檢測待輸出的字符串必須長度為1
number = 102.40101
print("%%i 符號整數(shù) %i" % number)
print("%%i 符號整數(shù):%i" % -number)
print("%%d 符號整數(shù) %d" % number)
print("%%d 符號整數(shù) %d" % -number)
print("%%u 無符號整數(shù):%u" % number)
print("%%u 無符號整數(shù):%u" % -number)
#print("八進制 %o" % number)
print("%%o 八進制 %o" % 102)
print("%%x16進制 %x" % 102)
#print("16進制 %X" % 102)
print("%%e 自然常數(shù) e進制: %e" % number)
#print("%E" % number)
print("%%f 浮點數(shù) %f" % number)
print("%%g 靈活的有效顯示:%g" % number) #保證顯示6微有效數(shù)字的前提下,靈活的選擇小數(shù)方式,或者科學計數(shù)法
#print("%G" % number)
print("%%g 靈活的有效顯示:%g" % (number*10001)) #保證顯示6微有效數(shù)字的前提下,靈活的選擇小數(shù)方式,或者科學計數(shù)法
#下面兩種寫法需要注意執(zhí)行順序
#print("%g" % number*10001) #注意這種寫法
#print("%g" % number**10) #注意這種寫法
讀者可以直接復制運行代碼,學委補充了運行效果圖:

這里比較特殊的是‘%u'無符號整型的展示,正負數(shù)并無區(qū)別。
那是肯定的,無符號整型跟有符號整型是表示數(shù)的兩種手段。
但是無符號的比有符號多了一個位來放數(shù)字,所以范圍更大。
上面這段題外話,小白稍微看看或者跳過。我們繼續(xù)看看其他格式化方式。
第二種占位符格式化
跟上面稍微區(qū)別就是我們會看到一下明顯的下標。
{0}, {1}, … {n}
想要留幾個替換位,就放幾個{}括起來,但要求必須給到n個參數(shù),更多信息參考https://docs.python.org/3/library/string.html
這個非常簡單直接,我們看看代碼:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2021/10/30 10:13 上午
# @Author : LeiXueWei
# @CSDN/Juejin/Wechat: 雷學委
# @XueWeiTag: CodingDemo
# @File : string_format1.py
# @Project : hello
import sys
slogan = "持續(xù)學習持續(xù)開發(fā)"
author = "雷學委"
text = "{0}, {1}".format(slogan, author)
print("text= %s" % text)
關(guān)鍵字格式化
非常好理解就是類似{}一對大括弧中間為待替換的內(nèi)容。
這個非常簡單直接,我們看看代碼:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2021/10/30 10:13 上午
# @Author : LeiXueWei
# @CSDN/Juejin/Wechat: 雷學委
# @XueWeiTag: CodingDemo
# @File : string_format2.py
# @Project : hello
import sys
slogan = "持續(xù)學習持續(xù)開發(fā)"
author = "雷學委"
text = f"{slogan} , {author}"
print("text= %s" % text)
運行效果如下:

從這里看,關(guān)鍵字格式化比較友好!
總結(jié)
本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
python3+PyQt5實現(xiàn)支持多線程的頁面索引器應(yīng)用程序
這篇文章主要為大家詳細介紹了python3+PyQt5實現(xiàn)支持多線程的頁面索引器應(yīng)用程序,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-04-04
詳解Python如何利用Shelve進行數(shù)據(jù)存儲
Shelve是Python標準庫中的一個模塊,用于實現(xiàn)簡單的數(shù)據(jù)持久化,本文將詳細介紹Shelve模塊的功能和用法,并提供豐富的示例代碼,希望對大家有所幫助2023-11-11
python sklearn數(shù)據(jù)預(yù)處理之正則化詳解
數(shù)據(jù)的預(yù)處理是數(shù)據(jù)分析,或者機器學習訓練前的重要步驟,這篇文章主要為大家詳細介紹了sklearn數(shù)據(jù)預(yù)處理中正則化的相關(guān)知識,需要的可以參考下2023-10-10

