1. 程式人生 > >python格式化輸出函式之format

python格式化輸出函式之format

format相對於老版的%有很多優點
1.不需要理會資料型別
2.單個引數可以多次輸出,引數順序可以不同
3.填充方式十分靈活,對齊方式異常強大
4.官方推薦用的方式,%方式在後面的版本終將會被淘汰

一、str.format()方法會返回一個新的字串,在新的字串中,原字串的替換欄位被適當格式化後的引數替換,如下:
‘I love {0} ,I study {0} {1} years’.format(‘python’, 5) ==>I love python,I study python 5 years

format格式:
“{[field_name][!conversion][:][[fill]align][sign][#][0][width][,][.precision][type]}”.format()

1.欄位名field_name
(1)每個替換欄位由包含在花括號中的field_name標識的,如果field_name是簡單的整數,就將被作為傳遞給str.format()的一個引數的索引位置,這種情況下,{0}、{1}..分別被format引數列表的第1、2….個引數代替,如果需要輸出花括號,那就寫兩遍:{{0}}

(2)可以很容易連線字串其他資料型別,當然也可以用來連線字串,但最好用str.join
“I {0}{1}{2}”.format(‘你’,[1,2],(‘as’,3))===> “I 你[1, 2](‘as’, 3)”

(3)欄位名為關鍵字引數的名稱:關鍵字引數要在所有位置引數後
“{who} turned {age} this year”.format(who=’she’, age=88)==>she turned 88 this year
“the {who} was {0} this year”.format(12, who=’boy’)==>the boy was 12 this year

(4)欄位名可以引用集合型別資料:利用列表、字串、元組的索引
l=[‘python’, ‘c’, ‘c++’, ‘ruby’, ‘java’]
‘I learn {0[1]} first,then {0[2]} and {0[4]},finally I for in love with {0[0]}’.format(l) ==> ‘I learn c first,then c++ and java,finally I for in love with python’

(5)字典型別的引數:
d=dict(a=’hello’, b=’world’) =====>{“a”:”hello”, “b”:”world”}
“{0[a]} {0[b]}!!!”.format(d) ======>’hello world!!!’
這裡需要注意的是:{0[a]}這裡的a沒有引號,加了會報錯,但是如果是單純的字典利用key取values的時候必須加引號:d[‘a’],d[‘b’]

(6)用句點引用引數的屬性值
import math
“math.pi == {0.pi}”.format(math) ===>’math.pi == 3.141592653589793’

(7) py3.1以後,忽略欄位名成為可能,這種情況下,Python會自動的進行處理
“{}:{}:{}”.format(‘a’,’b’,’c’) ===> ‘a:b:c’

(8)序列解析傳參技術
“{0}{1}{2}”.format(*[1,2,3]) ==>’123’
“{0} {1}{2}”.format(*(‘hello’,’world’,3)) ==>’hello world3’
“{a} {b} {c}”.format(**{‘a’:’I’, ‘b’:’love’, ‘c’:’python’}) ===> ‘I love python’

2.轉換conversion:!s !r !a
通過向欄位中新增conversion指定符可以強制指定結果是以字串形式輸出還是以表象形式輸出;有三個這種指定符:s,用於強制使用字串形式,r,用於強制使用表象形式,a用於強制使用表象形式但僅限於ASCII字元:
import decimal
“{0} {0!s} {0!r} {0!a}”.format(decimal.Decimal(‘93.4’)) ==>”93.4 93.4 Decimal(‘93.4’) Decimal(‘93.4’)”

由於上面這個字串僅由ASCII字元組成,所有!r和!a一樣,下面這種方法可以阻止非ascii字元輸出
“{0} {0!s} {0!r} {0!a}”.format(“我愛python”) ==>”我愛python 我愛python ‘我愛python’ ‘\u6211\u7231python’”

3.格式規約(這部分講的是冒號之後的部分):[[fill]align][sign][#][0][width][,][.precision]

對於字串而言,我們可以控制的包括填充字元、欄位內對其方式、欄位寬度(最大值、最小值)、整數分隔符(一般是逗號),浮點數精度控制

(1)fill填充字元可以是除{外的字元,一般可以是0,#,*等,但是隻能為1個字元,這裡需要注意的是如果指定了fill,就一定要指定對齊字元align,對齊有下面三種:向左對齊<;向右對齊>;居中對齊^;再之後為可選的最小寬度和最大寬度(最大寬度前面加上句點.)
例子:
s=’The sword of truth’
‘{0:25}’.format(s) ==> ‘The sword of truth ’
‘{0:>25}’.format(s) ==> ’ The sword of truth’
‘{0:<25}’.format(s) ==> ‘The sword of truth ’
‘{0:^25}’.format(s) ==> ’ The sword of truth ’
‘{0:-^25}’.format(s) ==> ‘—The sword of truth—-’
‘{0:#^25}’.format(s) ==> ‘###The sword of truth####’
‘{0:.<25}’.format(s) ==> ‘The sword of truth…….’
注意下面兩種情況:
‘{0:.25}’.format(s) ===》’The sword of truth’
‘{0:.5}’.format(s) ===》’The s’
這裡的句點不是填充符號,因為上面說過,fill必須和align一起出現,所以這裡的句點表示的是最大寬度:
最小寬度為m 最大寬度為n 實際寬度為w
1) m、n>w 按最小寬度填充字元
‘{0:^5.6}’.format(‘123’) ==> ‘*123
‘{0:^6.5}’.format(‘123’) ==> ‘*123*
2)w>m、n截斷
w>m>n ==> ‘{0:^6.5}’.format(‘1232345’) ==> ‘12323
w>n>m ==> ‘{0:*^5.6}’.format(‘1232345’) ==> ‘123234’
3)m>w>n
‘{0:^6.4}’.format(‘12325’) ==> ‘*1232
4)n>w>m
‘{0:*^4.6}’.format(‘12325’) ==> ‘12325’
5)單個
‘{0:*^4}’.format(‘12325’) ===> ‘12325’
‘{0:^6}’.format(‘12325’) ===>’12325
‘{0:*^.4}’.format(‘12325’)===>’1232’
‘{0:*^.6}’.format(‘12325’)===> ‘12325’

(2)sign對於數字型別有效:+ -能在正數前面加上一個+,這個只需要記住他的位置就好了:[[fill]align][sign][#][0][width][,][.precision]
‘{0:#<+20.6f}’.format(12325.343) ==>’+12325.343000#######’
‘{0:b} {0:o} {0:x} {0:X}’.format(1461287) ==>’101100100110000100111 5446047 164c27 164C27’
注意:他們引數只能是數字不能使字串,這裡的b、o、x分別是數字的二進位制、八進位制、16進位制、d為10進位制是預設情況可以不寫。
在寬度後面可以加上一個逗號用於對整數分組
‘{0:,}’.format(1461287) ==> ‘1,461,287’
(3)對於浮點數的格式規約在結尾處有點差別,第一在可選最小寬度後面可以通過一個句點後跟一個整數指定保留小數的位數(包括小數點),也可以早結尾處新增一個型別符號:e表示使用指數形式,E是表示使用E指數形式,f表示使用標準的浮點形式,g表示通常格式,%會使資料擴大100倍後面加上%

“{0:-<10.6}”.format(math.pi)==》’3.14159—’
“{0:-<.5}”.format(math.pi)==》’3.1416’
“{0:-<.5e}”.format(math.pi*100) ==>’3.14159e+02’
“{0:%}”.format(math.pi)==》’314.159265%’

(3)關於複數

“{0.real:.3f}{0.imag:+.3f}j”.format(4.2344+5.3445j) ==> ‘4.234+5.345j’
“{0.real:.3f}{0.imag:-.3f}j”.format(4.2344+5.3445j) ==> ‘4.234-5.345j’
前面的+-可以不寫讓他自己去判斷:
“{0.real:.3f}{0.imag:.3f}j”.format(4.2344+5.3445j) ==> ‘4.234+5.345j’
“{0.real:.3f}{0.imag:.3f}j”.format(4.2344+5.3445j) ==> ‘4.234-5.345j’

相關推薦

python格式化輸出函式format

format相對於老版的%有很多優點 1.不需要理會資料型別 2.單個引數可以多次輸出,引數順序可以不同 3.填充方式十分靈活,對齊方式異常強大 4.官方推薦用的方式,%方式在後面的版本終將會被淘汰 一、str.format()方法會返回一個新的字串,

Python格式化輸出format函式

本文主要整理和彙總python一系列的格式化輸出方式: 列印整數 print ("I'm number %d" % (20)) >>> I'm number 20 列印浮

python 格式化輸出%號

使用 comment 通過 小寫 字母 格式 十六進制 列表 table <2>什麽是格式化 看如下代碼: age = 10 print("我今年%d歲"%age) age += 1 print("我今年%d歲"%age)

python——格式化輸出、占位符、format()

nbsp int 十進制 border 默認 %s code order pri 占位符 常用占位符 描述 %s 字符串 %d 十進制整數 %o 八進制 %x 十六進制 %f 浮點數 >>> pri

python格式化輸出format()方法中文對齊問題解決方法

關於format()方法的基本使用這裡就不介紹了。 問題: 當我們使用format()輸出一列中文的時候,明明設定了固定寬度和空格填充,輸出完成的時候還是會出現無法對齊的情況。 原因: 因為我們輸出的是中文字元,當我們輸出的中文寬度不夠約定的寬度時,系統會自動進行填充。 而問題恰

python函式format()

 直接上原始碼: def format(self, *args, **kwargs): # known special case of str.format """ S.format(*args, **kwargs) -> str

python格式化輸出

python格式化輸出#!/bin/bash/env python #python3.X name = input("name:") age = int(input("age:")) job = input("job:") #格式化1 msg = ‘‘‘ ------info of %s--------

Python格式化輸出的四種方法

python#!/usr/bin/env python#coding:utf-8name = raw_input("name:")sex = raw_input("sex:")age = int(raw_input("age:"))info0 = ‘‘‘-------- inio fo0 -------nam

Python 格式化輸出print

%u 小寫 科學 字符串 百分號 內存地址 line 補齊 mic 1. 常用的格式符號 %符號使用列表: 格式符號 轉換 %d 有符號十進制整數 %i 有符號十進制整數,並且可以自動將輸入的八進制(或者十六進制)轉換為十進制 %u 無符

python格式化輸出(轉)

表達式 () 進制 整數 格式化輸入輸出 字符串 賦值 pytho 內置 在許多編程語言中都包含有格式化字符串的功能,比如C和Fortran語言中的格式化輸入輸出。Python中內置有對字符串進行格式化的操作%。 模板 格式化字符串時,Python使用一個字符串作為模板

python格式化輸出 2.19/2018

div end light -- -i gpo true post pri name=input("Name:") age=input("Age:") job=input("Job:") salary=input("Salary:") msg = ‘‘‘ -------

python 格式化輸出%s/%f/%d等

http img %d .com info 技術 格式 print 截取 格式說明由%和格式字符組成,如%f,它的作用是將數據按照指定的格式輸出。格式說明是由“%”字符開始的。 1.整型輸出%d print ‘my age is %d‘% (26) 2.輸出字符串%s pr

[ python ] 格式化輸出、字符集、and/or/not 邏輯判斷

答案 密碼 範圍 src usr list 作業 格式化 條件 格式化輸出   %: 占位符     s: 字符串     d: 數字     %%: 表示一個%, 第一個%是用來轉義 實例: name = input(‘姓名:‘) age = in

Python 格式化輸出 —— 小數轉化為百分數

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

Python 格式化輸出 %

demo.py: name = "張三" print("我的名字叫%s" %name) # %s 字串 student_no = 26 print("我的學號是%06d" %student_no) # %06d 至少6位,不足6位的用0補齊。 price = 8.5 weight

Python 格式化輸出 —— r 與 s 的區別( repr 與 str )

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

python格式化輸出保留2位小數

我是小白就不用多說了,學習python做了個練習題,結果運行了一遍,發現輸入金額後得到的有很多位小數, 雖然不知道為什麼,但是看得很不舒服, 就想到應該把讓小數點後只保留2位數 找到了方法:將{0}改為{:.2f}     # 一家商場在降價促銷。如果購買金額5

關於printf格式化輸出函式後面f的作用和對printf函式的總結

1.printf後面的f是format,就是格式化的意思,它的作用是以使用者(我們)指定的格式,把指定的資料顯示到螢幕上 2.printf函式是一個標準庫函式,它的函式程式碼在stdio.h這個檔案中(注:我們在程式中只是寫明要使用這個函式,並沒有包含這個函式的程式碼),而在有些情況,可

Python格式化輸出 Python格式化輸出

Python格式化輸出 轉自:http://www.cnblogs.com/plwang1990/p/3757549.html python print格式化輸出。 1. 列印字串 print ("His name is %s"%("Aviad")) 效果: 2.列印

python-2 字串函式三 isdigit() 、 isnumeric() 、isdecimal 區別 Python中 isdigit() 和 isnumeric() 的區別

Python中 isdigit() 和 isnumeric() 的區別   num = "1" #unicodenum.isdigit() # Truenum.isdecimal() # Truenum.isn