小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

Python字符串格式化 - 一杯苦咖啡 - 博客園

 ganame 2011-02-13

Python字符串格式化

字符串的格式化

 

在python中也有類(lèi)似于c中的printf()的格式輸出標(biāo)記。在python中格式化輸出字符串使用的是%運(yùn)算符,通用的形式為

  • 格式標(biāo)記字符串 % 要輸出的值組

其中,左邊部分的”格式標(biāo)記字符串“可以完全和c中的一致。右邊的'值組'如果有兩個(gè)及以上的值則需要用小括號(hào)括起來(lái),中間用短號(hào)隔開(kāi)。重點(diǎn)來(lái)看左邊的部分。左邊部分的最簡(jiǎn)單形式為:

  • %cdoe

其中的code有多種,不過(guò)由于在python中,所有東西都可以轉(zhuǎn)換成string類(lèi)型,因此,如果沒(méi)有什么特殊需求完全可以全部使用’%s‘來(lái)標(biāo)記。比如:

  • '%s %s %s' % (1, 2.3, ['one', 'two', 'three'])

它的輸出為'1 2.3 ['one', 'two', 'three']',就是按照%左邊的標(biāo)記輸出的。雖然第一個(gè)和第二值不是string類(lèi)型,一樣沒(méi)有問(wèn)題。在這個(gè)過(guò)程中,當(dāng)電腦發(fā)現(xiàn)第一個(gè)值不是%s時(shí),會(huì)先調(diào)用整型數(shù)的函數(shù),把第一個(gè)值也就是1轉(zhuǎn)成string類(lèi)型,然后再調(diào)用str()函數(shù)來(lái)輸出。前面說(shuō)過(guò)還有一個(gè)repr()函數(shù),如果要用這個(gè)函數(shù),可以用%r來(lái)標(biāo)記。除了%s外,還有很多類(lèi)似的code:

  • 整型數(shù):%d
  • 無(wú)符號(hào)整型數(shù):%u
  • 八進(jìn)制:%o
  • 十六進(jìn)制:%x   %X
  • 浮點(diǎn)數(shù):%f
  • 科學(xué)記數(shù)法: %e   %E
  • 根據(jù)數(shù)值的不同自動(dòng)選擇%e或%f: %g
  • 根據(jù)數(shù)值的不同自動(dòng)選擇%E或%f: %G

就跟前面說(shuō)用\進(jìn)行轉(zhuǎn)義一樣,這里用%作為格式標(biāo)記的標(biāo)識(shí),也有一個(gè)%本身應(yīng)該如何輸出的問(wèn)題。如果要在”格式標(biāo)記字符串“中輸出%本身,可以用%%來(lái)表示。
上面說(shuō)的只是格式標(biāo)記的最簡(jiǎn)間的形式,來(lái)看復(fù)雜一點(diǎn)的:

  • ‘%6.2f’ % 1.235

在這種形式中,在f的前面出現(xiàn)了一個(gè)類(lèi)似小數(shù)的6.2它表示的意思是,總共輸出的長(zhǎng)度為6個(gè)字符,其中小數(shù)2位。還有更復(fù)雜的:

  • ‘%06.2f’ % 1.235

在6的前面多了一個(gè)0,表示如果輸出的位數(shù)不足6位就用0補(bǔ)足6位。這一行的輸出為‘001.24’,可以看到小數(shù)也占用一位。類(lèi)似于這里0這樣的標(biāo)記還有-、+。其中,-表示左對(duì)齊,+表示在正數(shù)前面也標(biāo)上+號(hào),默認(rèn)是不加的。最后來(lái)看最復(fù)雜的形式:

  • ‘%(name)s:%(score)06.1f’ %{'score':9.5, 'name':'newsim'}

這種形式只用在要輸出的內(nèi)容為dictionary(一種python的數(shù)據(jù)類(lèi)型)時(shí),小括號(hào)中的(name)和(score)對(duì)應(yīng)于后面的鍵值對(duì)中的鍵。前面的例子可以看到,”格式標(biāo)記字符串“中標(biāo)記的順序和"要輸出的值組"中的值是一一對(duì)應(yīng)的,有順序,一對(duì)一,二對(duì)二。而在這種形式中,則不是,每個(gè)格式標(biāo)記對(duì)應(yīng)哪個(gè)值由小括號(hào)中的鍵來(lái)指定。這行代碼的輸出為:'newsim:0009.5'。

 

有時(shí)候在%6.2f這種形式中,6和2也不能事先指定,會(huì)在程序運(yùn)行過(guò)程中再產(chǎn)生,那怎么輸入呢,當(dāng)然不能用%%d.%df或%d.%d%f。可以用%*.*f的形式,當(dāng)然在后面的”要輸出的值組“中包含那兩個(gè)*的值。比如:'%*.*f' % (6, 2, 2.345)就相當(dāng)于'%6.2f' % 2.345。

 

這是這本書(shū)到此為止看起來(lái)最復(fù)雜的內(nèi)容。不過(guò)如果記不住,或不想那么耐煩,完全可以全部用%s代替,或者用多個(gè)"+"來(lái)構(gòu)造類(lèi)似的輸出字符串。這里的%真有點(diǎn)除法的味道,怪不得設(shè)計(jì)者會(huì)選擇用%這個(gè)除號(hào)。

 

 

象C 中的sprintf函數(shù)一樣,可以用“%”來(lái)格式化字符串。

Table 3.1. 字符串格式化代碼

格式 描述
%% 百分號(hào)標(biāo)記
%c 字符及其ASCII碼
%s 字符串
%d 有符號(hào)整數(shù)(十進(jìn)制)
%u 無(wú)符號(hào)整數(shù)(十進(jìn)制)
%o 無(wú)符號(hào)整數(shù)(八進(jìn)制)
%x 無(wú)符號(hào)整數(shù)(十六進(jìn)制)
%X 無(wú)符號(hào)整數(shù)(十六進(jìn)制大寫(xiě)字符)
%e 浮點(diǎn)數(shù)字(科學(xué)計(jì)數(shù)法)
%E 浮點(diǎn)數(shù)字(科學(xué)計(jì)數(shù)法,用E代替e)
%f 浮點(diǎn)數(shù)字(用小數(shù)點(diǎn)符號(hào))
%g 浮點(diǎn)數(shù)字(根據(jù)值的大小采用%e或%f)
%G 浮點(diǎn)數(shù)字(類(lèi)似于%g)
%p 指針(用十六進(jìn)制打印值的內(nèi)存地址)
%n 存儲(chǔ)輸出字符的數(shù)量放進(jìn)參數(shù)列表的下一個(gè)變量中

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀(guān)點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多