




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
09字符串的格式化方法《Python開(kāi)發(fā)技術(shù)應(yīng)用》格式化方法格式化方法是在字符串里設(shè)置占位符,隨后可以自由地將任何數(shù)據(jù)類型放置到這些占位符上,實(shí)現(xiàn)高度自由的內(nèi)容定制。Python有三種格式化方法:格式化方法傳統(tǒng)的格式化表達(dá)式字符串的format()方法自帶格式化功能的f-string早期版本推薦的做法,現(xiàn)在不建議使用始于Python2.6由Python3.6引入字符串格式化表達(dá)式字符串格式化表達(dá)式是Python早期版本的格式化方法,沿用了C語(yǔ)言風(fēng)格的格式化占位符:字符串格式化表達(dá)式規(guī)范的寫法是兩側(cè)各保留一個(gè)空格參數(shù)可以是字面常量,也可以是符號(hào)常量或變量類型碼%d表示整數(shù)類型的參數(shù)print("我是%s,我今年%d歲。"%("小豬佩奇",5))類型碼%s表示需要字符串類型的參數(shù)輸出結(jié)果:我是小豬佩奇,我今年5歲。str.format()方法通過(guò)在字符串中預(yù)留花括號(hào){}來(lái)定義格式化占位符,從而完成字符串的格式化。占位符由字段名(fieldname)、轉(zhuǎn)換字段(conversionfield)和格式說(shuō)明符(formatspecifier)組成,即一般形式為:{字段名!轉(zhuǎn)換字段:格式說(shuō)明符}每一部分都可以省略str.format()方法調(diào)用對(duì)象方法的標(biāo)準(zhǔn)格式:對(duì)象.方法名(參數(shù))要填充到占位符的數(shù)據(jù)對(duì)象沒(méi)有任何修飾的(空)占位符print("我是{},我今年{}歲".format("小豬佩奇",5))占位符的字段名>>>"{0}!{0}!{0}!我們?nèi)f眾一心,冒著敵人的炮火,{1}!".format('起來(lái)','前進(jìn)')'起來(lái)!起來(lái)!起來(lái)!我們?nèi)f眾一心,冒著敵人的炮火,前進(jìn)!'字段名的重復(fù)置放和亂序置放由于占位符中的數(shù)字代表了參數(shù)的序號(hào)(下標(biāo)),所以同一個(gè)參數(shù)可以重復(fù)放在不同的占位符上,只要使用相同的序號(hào)即可;也可以交換序號(hào)的順序,或者也可以對(duì)部分參數(shù)放棄不用。"我叫{},我今年{}歲".format("佩奇",5)"我叫{0},我今年{1}歲".format("佩奇",5)由數(shù)字引用的占位符字段名可以在占位符中寫上數(shù)字,作為序號(hào),該序號(hào)對(duì)應(yīng)了參數(shù)的順序,參數(shù)的順序和序列的下標(biāo)數(shù)字一樣,從0開(kāi)始。下面兩邊的代碼是等價(jià)的:由名稱引用的字段名可以通過(guò)參數(shù)列表中提供的名稱(標(biāo)識(shí)符)來(lái)定義占位符:注意參數(shù)的寫法,這種傳遞參數(shù)的方法稱為關(guān)鍵字參數(shù),詳見(jiàn)后續(xù)的函數(shù)相關(guān)內(nèi)容。數(shù)字占位符和名稱占位符可以混合使用,要注意數(shù)字占位符必須在前,名稱占位符必須在后。>>>"我是{name},我今年{age}歲。".format(name='小豬佩奇',age=5)'我是小豬佩奇,我今年5歲。'>>>"{0}的作品《{1}》獲得了{(lán)achieve}。".format('劉慈欣','三體',achieve='雨果獎(jiǎng)')'劉慈欣的作品《三體》獲得了雨果獎(jiǎng)。'占位符的字段名容器參數(shù)解包為format()方法提供一個(gè)容器對(duì)象(如列表)作為參數(shù),format()方法會(huì)將這個(gè)容器對(duì)象解包,令其中的每個(gè)元素分別擔(dān)任各個(gè)參數(shù)。字典參數(shù)解包為format()方法提供一個(gè)字典對(duì)象作為參數(shù),format()方法會(huì)將這個(gè)字典對(duì)象解包,令其中的每個(gè)鍵值對(duì)皆作為一個(gè)關(guān)鍵字參數(shù)。此時(shí),鍵的名稱也就相當(dāng)于是參數(shù)的變量名,在占位符上需要使用這些名稱來(lái)使參數(shù)與之匹配。>>>argv=['莎士比亞','雨果','托爾斯泰','曹雪芹','海綿寶寶','我']>>>"毫無(wú)疑問(wèn),{}、{}、{}和{}都是著名的文豪。".format(*argv)'毫無(wú)疑問(wèn),莎士比亞、雨果、托爾斯泰和曹雪芹都是著名的文豪。'>>>kw={'名稱':'仙女座星系','距離':'250萬(wàn)光年','大小':'15萬(wàn)光年','類型':'棒旋星系'}>>>"除了大小麥哲倫星云,離銀河系最近的星系是{名稱},它離我們遠(yuǎn)達(dá){距離},直徑有{大小},是典型的{類型}。".format(**kw)'除了大小麥哲倫星云,離銀河系最近的星系是仙女座星系,它離我們遠(yuǎn)達(dá)250萬(wàn)光年,直徑有15萬(wàn)光年,是典型的棒旋星系。'占位符的字段名轉(zhuǎn)換字段>>>"{!s}".format("哈哈")'哈哈'轉(zhuǎn)換字段是占位符的第二部分:{字段名!轉(zhuǎn)換字段:格式說(shuō)明符}轉(zhuǎn)換字段用于設(shè)置參數(shù)以何種字符串類型放置到占位符上,前面要加上感嘆號(hào)“!”,絕大多數(shù)情況下都不用設(shè)置這一部分內(nèi)容。!s傳遞參數(shù)之前先對(duì)參數(shù)調(diào)用str(),默認(rèn)方式。!r傳遞參數(shù)之前先對(duì)參數(shù)調(diào)用repr(),repr()函數(shù)以字符串來(lái)表達(dá)數(shù)據(jù)對(duì)象的字面格式。!a傳遞參數(shù)之前先對(duì)參數(shù)調(diào)用ascii(),類似repr()函數(shù),但是對(duì)于非ASCII字符,使用\x,\u或者\(yùn)U轉(zhuǎn)義。>>>"{!r}".format("哈哈")"'哈哈'">>>"{!a}".format("哈哈")"'\\u54c8\\u54c8'"格式說(shuō)明符格式說(shuō)明符的總體認(rèn)識(shí)占位符的最后一部分是格式說(shuō)明符,以冒號(hào)“:”開(kāi)頭。標(biāo)準(zhǔn)格式說(shuō)明符的形式如下,方括號(hào)表示它們是可選的。[[fill]align]
[sign]
[#]
[0]
[width]
[grouping_option]
[.precision]
[type]其各部分含義為:[[自定義填充字符]對(duì)齊方式][正負(fù)號(hào)選項(xiàng)][#(用于顯示2、8、16進(jìn)制的前綴說(shuō)明符)][0(用于數(shù)字最小寬度的左側(cè)填充)][顯示寬度][分組選項(xiàng)][.小數(shù)精度][類型碼]>>>"TheheightofEverestis{:<8}meters.".format('8848')'TheheightofEverestis8848meters.'>>>"TheheightofEverestis{:>8}meters.".format('8848')'TheheightofEverestis8848meters.'>>>"TheheightofEverestis{:^8}meters.".format('8848')'TheheightofEverestis8848meters.'>>>"TheheightofEverestis{:x^8}meters.".format('8848')'TheheightofEverestisxx8848xxmeters.'對(duì)齊和填充[[fill]align]
[sign][#][0][width][grouping_option][.precision][type]可以用<、>、^分別表示左對(duì)齊、右對(duì)齊、居中對(duì)齊。在對(duì)齊符號(hào)的右側(cè)可以帶一個(gè)整數(shù)n用于指定寬度。如果指定了寬度,則可在對(duì)齊符號(hào)左側(cè)指定一個(gè)填充字符,默認(rèn)以空格填充??梢杂?來(lái)設(shè)置特殊填充——如果存在正負(fù)號(hào),在正負(fù)號(hào)之間允許寬度和填充內(nèi)容。該選項(xiàng)只對(duì)數(shù)字類型的參數(shù)有效。格式說(shuō)明符類型碼:字符串、整數(shù)和進(jìn)制轉(zhuǎn)換[[fill]align][sign][#][0][width][grouping_option][.precision][type]s字符串類型,可以兼容其他數(shù)據(jù)類型,是默認(rèn)的類型碼,可以省略;d十進(jìn)制整數(shù)類型;b/o/x/X整數(shù)類型的二進(jìn)制、八進(jìn)制和十六進(jìn)制表達(dá),X的大小寫決定十六進(jìn)制中的“A-F”顯示為大寫或小寫,前面的#號(hào)與之搭配,用于顯示進(jìn)制前綴,如0b、0x等;>>>"ThedefaultmaskforclassCaddressesisthree{:X}.".format(255)'ThedefaultmaskforclassCaddressesisthreeFF.'>>>"ThedefaultmaskforclassCaddressesisthree{:b}.".format(255)'ThedefaultmaskforclassCaddressesisthree11111111.'>>>"ThedefaultmaskforclassCaddressesisthree{:#o}.".format(255)'ThedefaultmaskforclassCaddressesisthree0o377.'格式說(shuō)明符類型碼:浮點(diǎn)數(shù)、顯示精度和分組選項(xiàng)[[fill]align][sign][#][0][width][grouping_option]
[.precision][type]f/F浮點(diǎn)數(shù)的定點(diǎn)記數(shù)法,大小寫區(qū)別在于對(duì)inf、-inf和nan的表達(dá);e/E浮點(diǎn)數(shù)的
科學(xué)記數(shù)法,用e或E來(lái)表示指數(shù)。默認(rèn)精度為6位;g/G浮點(diǎn)數(shù)的通用格式,根據(jù)整數(shù)部分的長(zhǎng)度來(lái)自動(dòng)選擇科學(xué)或定點(diǎn)計(jì)數(shù)法;%浮點(diǎn)數(shù)的百分比格式。精度指定了小數(shù)點(diǎn)后面要展示多少位小數(shù)。對(duì)于非數(shù)字類型,精度指定了最大字段寬度。整數(shù)類型不能指定精度。>>>"{:.5}".format("祝您每天好心情!")'祝您每天好'>>>"圓周率的前幾位是{:.5}。".format(3.1415926)'圓周率的前幾位是3.1416。'>>>'光速是{:f}米/秒'.format(299792458)'光速是299792458.000000米/秒'>>>'光速是{:f}米/秒'.format(299792458)'光速是299792458.000000米/秒'格式說(shuō)明符>>>'光速是{:,}米/秒'.format(299792458)'光速是299,792,458米/秒'數(shù)字的分組依據(jù)分組依據(jù)支持以下幾種類型:逗號(hào)“,”對(duì)數(shù)字以千為單位進(jìn)行分隔。下劃線“_”對(duì)浮點(diǎn)數(shù)和d類型的整數(shù)以千為單位進(jìn)行分隔。對(duì)于b、o、x和X類型,每四位插入一個(gè)下劃線,其他類型都會(huì)報(bào)錯(cuò)。>>>"{:_b}".format(2333333333)'1000_1011_0001_0011_1101_0111_0101_0101'格式說(shuō)明符f-stringf-string是Python3.6引入的新功能,使用和str.format()方法相同的格式化規(guī)則,但語(yǔ)法上更簡(jiǎn)潔,只需要寫一個(gè)f在左側(cè)引號(hào)外即可,無(wú)需再調(diào)用format()方法。>>>classmates=['秦始皇','亞歷山大','拿破侖','凱撒']>>>f"這是{classmates[2]}、{classmates[0]}、{classmates[1]}和{classmates[3]},都是我的同學(xué)。"'這是拿破侖、秦始皇、亞歷山大和凱撒,都是我的同學(xué)。'>>>>>>d1={'name':'xiaoming','age':22}>>>f"我叫{d1[name]},我今年{d1[age]}歲。"'我叫xiaoming,我今年22歲。'>>>f"ThedefaultmaskforclassCaddressesisthree{255:b}.{255:b}.{255:b}.{0:0<8b}"'ThedefaultmaskforclassCaddressesisthree11111111.11111111.11111111.00000000'案例:字符表格什么是字符表格在命令行界面下,只能顯示字符,不能顯示真正的表格,因此按表格的方式來(lái)呈現(xiàn)內(nèi)容,就只能由字符對(duì)象進(jìn)行格式化設(shè)置,尋求行和列的對(duì)齊,以此來(lái)達(dá)到表格的效果,這就是字符表格。中間留有一定寬度的空白每一列的字符均是對(duì)齊的表頭和表體之間的分隔線字符表格內(nèi)容準(zhǔn)備先把數(shù)據(jù)定義好,計(jì)算好每一列的寬度,按這個(gè)寬度來(lái)設(shè)置占位符。然后將對(duì)應(yīng)的數(shù)據(jù)填充進(jìn)去。數(shù)據(jù)如下:header=['姓名','國(guó)籍','賽項(xiàng)']body=[['呂小軍','中國(guó)','81公斤級(jí)舉重'],['蘇炳添','中國(guó)','百米短跑'],['張常鴻','中國(guó)','50米步槍三姿射擊']]表頭和每一行的數(shù)據(jù)依次放入占位符:f"{header[0]}{header[1]}{header[2]}"f"{body[0][0]}{body[0][1]}{body[0][2]}"...案例:字符表格列寬的控制表頭的第一列只有兩個(gè)漢字,但表體中都是三個(gè)漢字字段
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 倉(cāng)庫(kù)協(xié)議合同標(biāo)準(zhǔn)文本
- 三亞農(nóng)村平房買賣合同標(biāo)準(zhǔn)文本
- 會(huì)計(jì)咨詢合同標(biāo)準(zhǔn)文本
- 企業(yè)信息安全防護(hù)與緊急響應(yīng)機(jī)制構(gòu)建實(shí)踐案例分享
- 產(chǎn)品展架制作合同標(biāo)準(zhǔn)文本
- Module2 My house(教學(xué)設(shè)計(jì))-2024-2025學(xué)年教科版(廣州)英語(yǔ)四年級(jí)上冊(cè)
- ktv廚房合同標(biāo)準(zhǔn)文本
- 質(zhì)量管理知到課后答案智慧樹(shù)章節(jié)測(cè)試答案2025年春煙臺(tái)南山學(xué)院
- 智能化成本核算與管理知到課后答案智慧樹(shù)章節(jié)測(cè)試答案2025年春山東經(jīng)貿(mào)職業(yè)學(xué)院
- 關(guān)于承包食堂合同標(biāo)準(zhǔn)文本
- MT 181-1988煤礦井下用塑料管安全性能檢驗(yàn)規(guī)范
- 骨轉(zhuǎn)移瘤課件
- 三下語(yǔ)文作業(yè)樣例(第三單元)
- 護(hù)士注冊(cè)健康體檢表下載【可直接打印版本】
- 地源熱泵空調(diào)技術(shù)應(yīng)用介紹
- 雙星與多星問(wèn)題
- 五年級(jí)下冊(cè)音樂(lè)教案-1編花籃-湘教版
- ESS嗜睡量表評(píng)分標(biāo)準(zhǔn)(Epworth 嗜睡量表(ESS))
- 住建部《建筑業(yè)10項(xiàng)新技術(shù)(2017版)》解讀培訓(xùn)課件
- 合作社組織架構(gòu)圖
- 《你知道嗎?》羅鳴亮
評(píng)論
0/150
提交評(píng)論