python中格式化字符串的作用_python中字符串格式化的意義(化妝)

格式 描述

%%百分號標記 #就是輸出一個%

%c字符及其ASCII碼

%s字符串

%d有符號整數(十進制)

%u無符號整數(十進制)

%o無符號整數(八進制)

%x無符號整數(十六進制)

%X無符號整數(十六進制大寫字符)

%e浮點數字(科學計數法)

%E浮點數字(科學計數法,用E代替e)

%f浮點數字(用小數點符號)

%g浮點數字(根據值的大小采用%e或%f)

%G浮點數字(類似于%g)

%p指針(用十六進制打印值的內存地址)

%n存儲輸出字符的數量放進參數列表的下一個變量中

%格式化符也可用于字典,可用%(name)引用字典中的元素進行格式化輸出。

負號指時數字應該是左對齊的,“0”告訴Python用前導0填充數字,正號指時數字總是顯示它的正負(+,-)符號,即使數字是正數也不例外。

可指定最小的字段寬度,如:"%5d" % 2。也可用句點符指定附加的精度,如:"%.3d" % 3。

e.g.

# 例:數字格式化

nYear = 2018

nMonth = 8

nDay = 18

# 格式化日期 %02d數字轉成兩位整型缺位填0

print '%04d-%02d-%02d'%(nYear,nMonth,nDay)

>> 2018-08-18# 輸出結果

fValue = 8.123

print '%06.2f'%fValue# 保留寬度為6的2位小數浮點型

>> 008.12# 輸出

print '%d'%10# 輸出十進制

>> 10

print '%o'%10# 輸出八進制

>> 12

print '%02x'%10# 輸出兩位十六進制,字母小寫空缺補零

>> 0a

print '%04X'%10# 輸出四位十六進制,字母大寫空缺補零

>> 000A

print '%.2e'%1.2888# 以科學計數法輸出浮點型保留2位小數

>> 1.29e+00

格式化操作符輔助指令

符號 作用

* 定義寬度或者小數點精度

- 用做左對齊

+ 在正數前面顯示加號( + )

在正數前面顯示空格

# 在八進制數前面顯示零('0'),在十六進制前面顯示'0x'或者'0X'(取決于

用的是'x'還是'X')

0 顯示的數字前面填充‘0’而不是默認的空格

% '%%'輸出一個單一的'%'

(var) 映射變量(字典參數)

m.n m 是顯示的最小總寬度,n 是小數點后的位數(如果可用的話)

python字符串格式化的意思就是用format函數格式化字符串的用法。

用法:它通過{}和:來代替傳統%方式。

1、使用位置參數

要點:從以下例子可以看出位置參數不受順序約束,且可以為{},只要format里有相對應的參數值即可,參數索引從0開,傳入位置參數列表可用*列表

>>> li = ['hoho',18]

>>> 'my name is {} ,age {}'.format('hoho',18)

'my name is hoho ,age 18'

>>> 'my name is {1} ,age {0}'.format(10,'hoho')

'my name is hoho ,age 10'

>>> 'my name is {1} ,age {0} {1}'.format(10,'hoho')

'my name is hoho ,age 10 hoho'

>>> 'my name is {} ,age {}'.format(*li)

'my name is hoho ,age 18'

2、使用關鍵字參數

要點:關鍵字參數值要對得上,可用字典當關鍵字參數傳入值,字典前加**即可

>>> hash = {'name':'hoho','age':18}

>>> 'my name is {name},age is {age}'.format(name='hoho',age=19)

'my name is hoho,age is 19'

>>> 'my name is {name},age is {age}'.format(**hash)

'my name is hoho,age is 18'

3、填充與格式化

:[填充字符][對齊方式 ][寬度]

1

2

3

4

5

6

>>> '{0:*>10}'.format(10) ##右對齊

'********10'

>>> '{0:*<10}'.format(10) ##左對齊

'10********'

>>> '{0:*^10}'.format(10) ##居中對齊

'****10****'

4、精度與進制

1

2

3

4

5

6

7

8

9

10

>>> '{0:.2f}'.format(1/3)

'0.33'

>>> '{0:b}'.format(10) #二進制化妝

'1010'

>>> '{0:o}'.format(10) #八進制

'12'

>>> '{0:x}'.format(10) #16進制

'a'

>>> '{:,}'.format(12369132698) #千分位格式化

'12,369,132,698'

5、使用索引

在python中也有類似于c中的printf()的格式輸出標記。在python中格式化輸出字符串使用的是%運算符,通用的形式為

格式標記字符串 % 要輸出的值組

其中,左邊部分的”格式標記字符串“可以完全和c中的一致。右邊的'值組'如果有兩個及以上的值則需要用小括號括起來,中間用短號隔開。重點來看左邊的部分。左邊部分的最簡單形式為:

%cdoe

其中的code有多種,不過由于在python中,所有東西都可以轉換成string類型,因此,如果沒有什么特殊需求完全可以全部使用’%s‘來標記。比如:

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

它的輸出為'1 2.3 ['one', 'two', 'three']',就是按照%左邊的標記輸出的。化妝雖然第一個和第二值不是string類型,一樣沒有問題。在這個過程中,當電腦發現第一個值不是%s時,會先調用整型數的函數,把第一個值也就是1轉成string類型,然后再調用str()函數來輸出。前面說過還有一個repr()函數,如果要用這個函數,可以用%r來標記。除了%s外,還有很多類似的code:

整型數:%d

無符號整型數:%u

八進制:%o

十六進制:%x %X

浮點數:%f

科學記數法: %e %E

化妝根據數值的不同自動選擇%e或%f: %g

根據數值的不同自動選擇%E或%f: %G

就跟前面說用\進行轉義一樣,這里用%作為格式標記的標識,也有一個%本身應該如何輸出的問題。如果要在”格式標記字符串“中輸出%本身,可以用%%來表示。

上面說的只是格式標記的最簡間的形式,來看復雜一點的:

‘%6.2f’ % 1.235

在這種形式中,在f的前面出現了一個類似小數的6.2它表示的意思是,總共輸出的長度為6個字符,其中小數2位。還有更復雜的:

‘%06.2f’ % 1.235

在6的前面多了一個0,表示如果輸出的位數不足6位就用0補足6位。這一行的輸出為‘001.24’,可以看到小數也占用一位。類似于這里0這樣的標記還有-、+。其中,-表示左對齊,+表示在正數前面也標上+號,默認是不加的。最后來看最復雜的形式:

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

這種形式只用在要輸出的內容為dictionary(一種python的數據類型)時,小括號中的(name)和(score)對應于后面的鍵值對中的鍵。前面的例子可以看到,”格式標記字符串“中標記的順序和"要輸出的值組"中的值是一一對應的,有順序,一對一,二對二。而在這種形式中,則不是,每個格式標記對應哪個值由小括號中的鍵來指定。這行代碼的輸出為:'newsim:0009.5'。

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

這是這本書到此為止看起來最復雜的內容。不過如果記不住,或不想那么耐煩,完全可以全部用%s代替,或者用多個"+"來構造類似的輸出字符串。這里的%真有點除法的味道,怪不得設計者會選擇用%這個除號。

象C 中的sprintf函數一樣,可以用“%”來格式化字符串

Table 3.1. 字符串格式化代碼

格式描述

%%百分號標記

%c字符及其ASCII碼

%s字符串

%d有符號整數(十進制)

%u無符號整數(十進制)

%o無符號整數(八進制)

%x無符號整數(十六進制)

%X無符號整數(十六進制大寫字符)

%e浮點數字(科學計數法)

%E浮點數字(科學計數法,用E代替e)

%f浮點數字(用小數點符號)

%g浮點數字(根據值的大小采用%e或%f)

%G浮點數字(類似于%g)

%p指針(用十六進制打印值的內存地址)

%n存儲輸出字符的數量放進參數列表的下一個變量中

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/455337.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/455337.shtml
英文地址,請注明出處:http://en.pswp.cn/news/455337.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

MongoDB的快速手動安裝

就是關于MongoDB主從庫的安裝配置和啟動。網上關于MongoDB的安裝有大量的文章供大家學習。我這里提供一個Windows環境下MongoDB主從庫的快速手動安裝的方法&#xff0c;只需要三步即可。 先下載的安裝包&#xff0c;解壓縮后找到bin文件夾&#xff0c;將bin文件夾拷貝至你自己的…

MP4音頻解碼信息

文章轉載自&#xff1a;http://blog.csdn.net/flyingqr/archive/2010/02/02/5282600.aspx 版權歸原作者&#xff0c;編輯&#xff1a;小乙哥 MP4文件格式分為頭部和數據兩部分&#xff0c;頭部是由許多被稱作Atom的結構單元嵌套或排列而成&#xff0c;數據部分則完全為實際數據…

時序圖 分支_UML用例圖

UML用例圖用例圖有以下東東:用例參與者關聯系統邊界用例使用橢圓來表示&#xff0c;橢圓里邊寫上用例的名稱:這里的用例可以理解為一個動作或行為,或者一個對象。參與者用一個小人兒,在小人兒下面寫上參與者名稱,例如學生:關聯用一條線表示:把很多個用例放到一個大的矩形框里。…

Python腳本實現漢子轉拼音

起步 中華文化博大精深&#xff0c;是中華民族的財富&#xff0c;吸收和繼承發揚中 華文化&#xff0c;是現代每個炎黃子孫無可推卸的天職。 今天小編就交大家用python寫一個腳本,實現漢子和拼音之間的轉換 pinyin.py 漢字轉拼音,With Python Example: from pinyin impor…

MySQL innodb_table_stats表不存在的解決方法

在做實驗時&#xff0c;使用mysqldump命令報錯[rootlinux-mysql02 3306]# mysqldump -uroot -p123456 -S /u02/data/3306/mysql.sock -A -B --events | gzip > /opt/rep.sql.gzmysqldump: Got error: 1146: Table mysql.innodb_index_stats doesnt exist when using LOCK TA…

自定義封裝 banner 組件

1. 效果圖預覽 2.基本功能 一個簡單方便的輪播圖組件&#xff0c;基于viewpager 基礎上進行的封裝。可設置 項目中圖片&#xff0c;網絡圖片&#xff0c; View&#xff1b;支持循環自動播放&#xff0c;手勢滑動切換&#xff0c;item點擊事件,可設置 點點的樣式寬高、顏色、大小…

vb.net服務器啟動后cpu占用了70_記一次服務器被異常程序占用的解決過程(懷疑黑客攻擊)...

最近在跑實驗&#xff0c;但是突然發現程序運行變慢&#xff0c;然后top命令查看程序運行情況&#xff0c;發現有異常進程&#xff0c;名字叫 bash&#xff0c;占用 2400% CPU計算資源。剛開始懷疑是挖礦程序&#xff0c;因實驗室網絡IP為教育網公網&#xff0c;懷疑被攻擊&…

3gp文件格式研究 (轉windcao的專欄)

序言 06我開始做3gp文件的播放器,但是關于3gp的文檔太少了也很難找,在網友luxh的幫助下,我終于有了第一份關于3gp文件格式的文檔《ISO/IEC 14496-12&#xff0c;ISO媒體文件格式》.在此真心感謝luxh的貢獻.當然了是英文版的,有文檔就不錯了.為了便于查閱和理解,我把之后陸續找…

Android開發必用工具及其進階途徑

三百六十行&#xff0c;行行出狀元&#xff0c;怎么樣才能在Android行業中當個狀元了&#xff0c;開發過程中的高效、自我能力的提升顯得至關重要&#xff0c;步入IT行業更是要時時刻刻學習&#xff0c;新技術更新快&#xff0c;今天將介紹一下Android開發中必用工具及其進階途…

MySQL遇到check the manual that corresponds to your MySQL server version for the right syntax錯誤

原來是MySQL表中不能包含關鍵字 轉載于:https://www.cnblogs.com/flycoding/p/7088465.html

Python腳本實現圖片加水印

起步 圖片是指由圖形、圖像等構成的平面媒體,有形式的事物&#xff0c;我們看到的&#xff0c;是圖畫、照片、拓片等的統稱。 為了保護一些原創圖片的版權,某些時候我們需要在圖片上面,加上水印,當然你可以用Photoshop來做,只不過如果圖片數量過多,亦或者圖片的動態生成的時候…

yarn 怎么查看有多個job在跑_flink on yarn 模式下提示yarn資源不足問題分析

背景在實時計算平臺上通過YarnClient向yarn上提交flink任務時一直卡在那里&#xff0c;并在client端一直輸出如下日志&#xff1a;(YarnClusterDescriptor.java:1036)- Deployment took more than 60 seconds. Please check if the requested resources are available in the Y…

MPEG-2TS碼流編輯的原理及其應用(轉載

[作者&#xff1a;遼寧電視臺 趙季偉] 在當今數字媒體不斷發展、新媒體業務不斷涌現 的前提下&#xff0c;實踐證明襁褓中的新媒體只有兩種經營方略可供選擇&#xff1a;或是購買并集成整套節目&#xff0c;或是低成本深加工新節目&#xff0c;再不可能去按照傳統生產模式…

Python中的yield詳解

閱讀別人的python源碼時碰到了這個yield這個關鍵字&#xff0c;各種搜索終于搞懂了&#xff0c;在此做一下總結&#xff1a; 通常的for…in…循環中&#xff0c;in后面是一個數組&#xff0c;這個數組就是一個可迭代對象&#xff0c;類似的還有鏈表&#xff0c;字符串&#xf…

shell循環結構之while循環

while循環 1) while CONDITION; dostatementstatement<改變循環條件真假的語句>done 編寫腳本&#xff0c;計算1---100的和 #!/bin/bash#sum0i1while [ $i -le 100 ]; dolet sum$sum$ilet i$i1doneecho $sum2) while true; do statementstatementdone #!/bin/bash#while …

python 管道隊列_關于python:Multiprocessing-管道與隊列

Python的多處理程序包中的隊列和管道之間的根本區別是什么&#xff1f;在什么情況下應該選擇一種&#xff1f; 什么時候使用Pipe()有優勢&#xff1f; 什么時候使用Queue()有優勢&#xff1f;Pipe()只能有兩個端點。Queue()可以有多個生產者和消費者。何時使用它們如果需要兩個…

pip默認使用國內鏡像地址

很多小伙伴在ubuntu系統下,使用pip安裝會很慢 以為安裝源在國外服務器上面 今天小編就教大家配置成讓pip默認從國內源中尋找安裝包 首先CtrlAltT打開終端 進入家目錄 cd ~在家目錄中創建一個文件夾,命名為.pip mkdir .pip進入目錄,并創建一個名為pip.conf的文件 cd .pip…

“大型票務系統”和“實物電商系統”的數據庫選型

討論請移步至&#xff1a;http://www.zhiliaotech.com/ideajam/idea/detail/423 相關文章&#xff1a; 《今天你買到票了嗎&#xff1f;——從鐵道部12306.cn站點漫談電子商務站點的“海量事務快速處理”系統》 不能簡單套用“實物電商系統”對“大型票務系統”做需求分析 “大…

FLV文件格式(Z)(轉載)

剛才在看一些關于demux的東西&#xff0c;在處理flv格式的文件的時候&#xff0c;由于自己對flv文件的格式不了解&#xff0c;所以就比較云頭轉向&#xff0c;正好看到了一篇講述flv文件格式的文章&#xff0c;寫的比較明白&#xff0c;所以就轉過來了。O(∩_∩)O~flv頭文件比較…

mysql-5.7中的innodb_buffer_pool_prefetching(read-ahead)詳解

一、innodb的read-ahead是什么&#xff1a; 所謂的read-ahead就是innodb根據你現在訪問的數據&#xff0c;推測出你接下來可能要訪問的數據&#xff0c;并把它們(可能要訪問的數據)讀入 內存。 二、read-ahead是怎么做到的&#xff1a; 1、總的來說read-ahead利用的是程序的局部…