字符串的格式化方法_第1頁
字符串的格式化方法_第2頁
字符串的格式化方法_第3頁
字符串的格式化方法_第4頁
字符串的格式化方法_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

09字符串的格式化方法《Python開發(fā)技術(shù)應(yīng)用》格式化方法格式化方法是在字符串里設(shè)置占位符,隨后可以自由地將任何數(shù)據(jù)類型放置到這些占位符上,實現(xiàn)高度自由的內(nèi)容定制。Python有三種格式化方法:格式化方法傳統(tǒng)的格式化表達(dá)式字符串的format()方法自帶格式化功能的f-string早期版本推薦的做法,現(xiàn)在不建議使用始于Python2.6由Python3.6引入字符串格式化表達(dá)式字符串格式化表達(dá)式是Python早期版本的格式化方法,沿用了C語言風(fēng)格的格式化占位符:字符串格式化表達(dá)式規(guī)范的寫法是兩側(cè)各保留一個空格參數(shù)可以是字面常量,也可以是符號常量或變量類型碼%d表示整數(shù)類型的參數(shù)print("我是%s,我今年%d歲。"%("小豬佩奇",5))類型碼%s表示需要字符串類型的參數(shù)輸出結(jié)果:我是小豬佩奇,我今年5歲。str.format()方法通過在字符串中預(yù)留花括號{}來定義格式化占位符,從而完成字符串的格式化。占位符由字段名(fieldname)、轉(zhuǎn)換字段(conversionfield)和格式說明符(formatspecifier)組成,即一般形式為:{字段名!轉(zhuǎn)換字段:格式說明符}每一部分都可以省略str.format()方法調(diào)用對象方法的標(biāo)準(zhǔn)格式:對象.方法名(參數(shù))要填充到占位符的數(shù)據(jù)對象沒有任何修飾的(空)占位符print("我是{},我今年{}歲".format("小豬佩奇",5))占位符的字段名>>>"{0}!{0}!{0}!我們?nèi)f眾一心,冒著敵人的炮火,{1}!".format('起來','前進(jìn)')'起來!起來!起來!我們?nèi)f眾一心,冒著敵人的炮火,前進(jìn)!'字段名的重復(fù)置放和亂序置放由于占位符中的數(shù)字代表了參數(shù)的序號(下標(biāo)),所以同一個參數(shù)可以重復(fù)放在不同的占位符上,只要使用相同的序號即可;也可以交換序號的順序,或者也可以對部分參數(shù)放棄不用。"我叫{},我今年{}歲".format("佩奇",5)"我叫{0},我今年{1}歲".format("佩奇",5)由數(shù)字引用的占位符字段名可以在占位符中寫上數(shù)字,作為序號,該序號對應(yīng)了參數(shù)的順序,參數(shù)的順序和序列的下標(biāo)數(shù)字一樣,從0開始。下面兩邊的代碼是等價的:由名稱引用的字段名可以通過參數(shù)列表中提供的名稱(標(biāo)識符)來定義占位符:注意參數(shù)的寫法,這種傳遞參數(shù)的方法稱為關(guān)鍵字參數(shù),詳見后續(xù)的函數(shù)相關(guān)內(nèi)容。數(shù)字占位符和名稱占位符可以混合使用,要注意數(shù)字占位符必須在前,名稱占位符必須在后。>>>"我是{name},我今年{age}歲。".format(name='小豬佩奇',age=5)'我是小豬佩奇,我今年5歲。'>>>"{0}的作品《{1}》獲得了{(lán)achieve}。".format('劉慈欣','三體',achieve='雨果獎')'劉慈欣的作品《三體》獲得了雨果獎。'占位符的字段名容器參數(shù)解包為format()方法提供一個容器對象(如列表)作為參數(shù),format()方法會將這個容器對象解包,令其中的每個元素分別擔(dān)任各個參數(shù)。字典參數(shù)解包為format()方法提供一個字典對象作為參數(shù),format()方法會將這個字典對象解包,令其中的每個鍵值對皆作為一個關(guān)鍵字參數(shù)。此時,鍵的名稱也就相當(dāng)于是參數(shù)的變量名,在占位符上需要使用這些名稱來使參數(shù)與之匹配。>>>argv=['莎士比亞','雨果','托爾斯泰','曹雪芹','海綿寶寶','我']>>>"毫無疑問,{}、{}、{}和{}都是著名的文豪。".format(*argv)'毫無疑問,莎士比亞、雨果、托爾斯泰和曹雪芹都是著名的文豪。'>>>kw={'名稱':'仙女座星系','距離':'250萬光年','大小':'15萬光年','類型':'棒旋星系'}>>>"除了大小麥哲倫星云,離銀河系最近的星系是{名稱},它離我們遠(yuǎn)達(dá){距離},直徑有{大小},是典型的{類型}。".format(**kw)'除了大小麥哲倫星云,離銀河系最近的星系是仙女座星系,它離我們遠(yuǎn)達(dá)250萬光年,直徑有15萬光年,是典型的棒旋星系。'占位符的字段名轉(zhuǎn)換字段>>>"{!s}".format("哈哈")'哈哈'轉(zhuǎn)換字段是占位符的第二部分:{字段名!轉(zhuǎn)換字段:格式說明符}轉(zhuǎn)換字段用于設(shè)置參數(shù)以何種字符串類型放置到占位符上,前面要加上感嘆號“!”,絕大多數(shù)情況下都不用設(shè)置這一部分內(nèi)容。!s傳遞參數(shù)之前先對參數(shù)調(diào)用str(),默認(rèn)方式。!r傳遞參數(shù)之前先對參數(shù)調(diào)用repr(),repr()函數(shù)以字符串來表達(dá)數(shù)據(jù)對象的字面格式。!a傳遞參數(shù)之前先對參數(shù)調(diào)用ascii(),類似repr()函數(shù),但是對于非ASCII字符,使用\x,\u或者\U轉(zhuǎn)義。>>>"{!r}".format("哈哈")"'哈哈'">>>"{!a}".format("哈哈")"'\\u54c8\\u54c8'"格式說明符格式說明符的總體認(rèn)識占位符的最后一部分是格式說明符,以冒號“:”開頭。標(biāo)準(zhǔn)格式說明符的形式如下,方括號表示它們是可選的。[[fill]align]

[sign]

[#]

[0]

[width]

[grouping_option]

[.precision]

[type]其各部分含義為:[[自定義填充字符]對齊方式][正負(fù)號選項][#(用于顯示2、8、16進(jìn)制的前綴說明符)][0(用于數(shù)字最小寬度的左側(cè)填充)][顯示寬度][分組選項][.小數(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.'對齊和填充[[fill]align]

[sign][#][0][width][grouping_option][.precision][type]可以用<、>、^分別表示左對齊、右對齊、居中對齊。在對齊符號的右側(cè)可以帶一個整數(shù)n用于指定寬度。如果指定了寬度,則可在對齊符號左側(cè)指定一個填充字符,默認(rèn)以空格填充??梢杂?來設(shè)置特殊填充——如果存在正負(fù)號,在正負(fù)號之間允許寬度和填充內(nèi)容。該選項只對數(shù)字類型的參數(shù)有效。格式說明符類型碼:字符串、整數(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”顯示為大寫或小寫,前面的#號與之搭配,用于顯示進(jìn)制前綴,如0b、0x等;>>>"ThedefaultmaskforclassCaddressesisthree{:X}.".format(255)'ThedefaultmaskforclassCaddressesisthreeFF.'>>>"ThedefaultmaskforclassCaddressesisthree{:b}.".format(255)'ThedefaultmaskforclassCaddressesisthree11111111.'>>>"ThedefaultmaskforclassCaddressesisthree{:#o}.".format(255)'ThedefaultmaskforclassCaddressesisthree0o377.'格式說明符類型碼:浮點數(shù)、顯示精度和分組選項[[fill]align][sign][#][0][width][grouping_option]

[.precision][type]f/F浮點數(shù)的定點記數(shù)法,大小寫區(qū)別在于對inf、-inf和nan的表達(dá);e/E浮點數(shù)的

科學(xué)記數(shù)法,用e或E來表示指數(shù)。默認(rèn)精度為6位;g/G浮點數(shù)的通用格式,根據(jù)整數(shù)部分的長度來自動選擇科學(xué)或定點計數(shù)法;%浮點數(shù)的百分比格式。精度指定了小數(shù)點后面要展示多少位小數(shù)。對于非數(shù)字類型,精度指定了最大字段寬度。整數(shù)類型不能指定精度。>>>"{:.5}".format("祝您每天好心情!")'祝您每天好'>>>"圓周率的前幾位是{:.5}。".format(3.1415926)'圓周率的前幾位是3.1416。'>>>'光速是{:f}米/秒'.format(299792458)'光速是299792458.000000米/秒'>>>'光速是{:f}米/秒'.format(299792458)'光速是299792458.000000米/秒'格式說明符>>>'光速是{:,}米/秒'.format(299792458)'光速是299,792,458米/秒'數(shù)字的分組依據(jù)分組依據(jù)支持以下幾種類型:逗號“,”對數(shù)字以千為單位進(jìn)行分隔。下劃線“_”對浮點數(shù)和d類型的整數(shù)以千為單位進(jìn)行分隔。對于b、o、x和X類型,每四位插入一個下劃線,其他類型都會報錯。>>>"{:_b}".format(2333333333)'1000_1011_0001_0011_1101_0111_0101_0101'格式說明符f-stringf-string是Python3.6引入的新功能,使用和str.format()方法相同的格式化規(guī)則,但語法上更簡潔,只需要寫一個f在左側(cè)引號外即可,無需再調(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'案例:字符表格什么是字符表格在命令行界面下,只能顯示字符,不能顯示真正的表格,因此按表格的方式來呈現(xiàn)內(nèi)容,就只能由字符對象進(jìn)行格式化設(shè)置,尋求行和列的對齊,以此來達(dá)到表格的效果,這就是字符表格。中間留有一定寬度的空白每一列的字符均是對齊的表頭和表體之間的分隔線字符表格內(nèi)容準(zhǔn)備先把數(shù)據(jù)定義好,計算好每一列的寬度,按這個寬度來設(shè)置占位符。然后將對應(yīng)的數(shù)據(jù)填充進(jìn)去。數(shù)據(jù)如下:header=['姓名','國籍','賽項']body=[['呂小軍','中國','81公斤級舉重'],['蘇炳添','中國','百米短跑'],['張常鴻','中國','50米步槍三姿射擊']]表頭和每一行的數(shù)據(jù)依次放入占位符:f"{header[0]}{header[1]}{header[2]}"f"{body[0][0]}{body[0][1]}{body[0][2]}"...案例:字符表格列寬的控制表頭的第一列只有兩個漢字,但表體中都是三個漢字字段

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論