python语言format用法_python基础_格式化输出(%用法和format用法)
目錄
%用法
1、整數(shù)的輸出
%o —— oct 八進(jìn)制
%d —— dec 十進(jìn)制
%x —— hex 十六進(jìn)制
>>> print('%o' % 20)24
>>> print('%d' % 20)20
>>> print('%x' % 20)14
2、浮點(diǎn)數(shù)輸出
(1)格式化輸出
%f ——保留小數(shù)點(diǎn)后面六位有效數(shù)字
%.3f,保留3位小數(shù)位
%e ——保留小數(shù)點(diǎn)后面六位有效數(shù)字,指數(shù)形式輸出
%.3e,保留3位小數(shù)位,使用科學(xué)計(jì)數(shù)法
%g ——在保證六位有效數(shù)字的前提下,使用小數(shù)方式,否則使用科學(xué)計(jì)數(shù)法
%.3g,保留3位有效數(shù)字,使用小數(shù)或科學(xué)計(jì)數(shù)法
>>> print('%f' % 1.11) #默認(rèn)保留6位小數(shù)
1.110000
>>> print('%.1f' % 1.11) #取1位小數(shù)
1.1
>>> print('%e' % 1.11) #默認(rèn)6位小數(shù),用科學(xué)計(jì)數(shù)法
1.110000e+00
>>> print('%.3e' % 1.11) #取3位小數(shù),用科學(xué)計(jì)數(shù)法
1.110e+00
>>> print('%g' % 1111.1111) #默認(rèn)6位有效數(shù)字
1111.11
>>> print('%.7g' % 1111.1111) #取7位有效數(shù)字
1111.111
>>> print('%.2g' % 1111.1111) #取2位有效數(shù)字,自動轉(zhuǎn)換為科學(xué)計(jì)數(shù)法
1.1e+03
(2)內(nèi)置round()
round(number[, ndigits])
參數(shù):
number - 這是一個(gè)數(shù)字表達(dá)式。
ndigits - 表示從小數(shù)點(diǎn)到最后四舍五入的位數(shù)。默認(rèn)值為0。
返回值
該方法返回x的小數(shù)點(diǎn)舍入為n位數(shù)后的值。
round()函數(shù)只有一個(gè)參數(shù),不指定位數(shù)的時(shí)候,返回一個(gè)整數(shù),而且是最靠近的整數(shù),類似于四舍五入,當(dāng)指定取舍的小數(shù)點(diǎn)位數(shù)的時(shí)候,一般情況也是使用四舍五入的規(guī)則,但是碰到.5的情況時(shí),如果要取舍的位數(shù)前的小數(shù)是奇數(shù),則直接舍棄,如果是偶數(shù)則向上取舍。
注:“.5”這個(gè)是一個(gè)“坑”,且python2和python3出來的接口有時(shí)候是不一樣的,盡量避免使用round()函數(shù)吧
>>> round(1.1125) #四舍五入,不指定位數(shù),取整
1
>>> round(1.1135,3) #取3位小數(shù),由于3為奇數(shù),則向下“舍”
1.113
>>> round(1.1125,3) #取3位小數(shù),由于2為偶數(shù),則向上“入”
1.113
>>> round(1.5) #無法理解,查閱一些資料是說python會對數(shù)據(jù)進(jìn)行截?cái)?#xff0c;沒有深究
2
>>> round(2.5) #無法理解
2
>>> round(1.675,2) #無法理解
1.68
>>> round(2.675,2) #無法理解
2.67
>>>
3、字符串輸出
%s
%10s——右對齊,占位符10位
%-10s——左對齊,占位符10位
%.2s——截取2位字符串
%10.2s——10位占位符,截取兩位字符串
>>> print('%s' % 'hello world') #字符串輸出
hello world>>> print('%20s' % 'hello world') #右對齊,取20位,不夠則補(bǔ)位
hello world>>> print('%-20s' % 'hello world') #左對齊,取20位,不夠則補(bǔ)位
hello world>>> print('%.2s' % 'hello world') #取2位
he>>> print('%10.2s' % 'hello world') #右對齊,取2位
he>>> print('%-10.2s' % 'hello world') #左對齊,取2位
he
4、 其他
(1)字符串格式代碼
(2)常用轉(zhuǎn)義字符
format用法
相對基本格式化輸出采用‘%’的方法,format()功能更強(qiáng)大,該函數(shù)把字符串當(dāng)成一個(gè)模板,通過傳入的參數(shù)進(jìn)行格式化,并且使用大括號‘{}’作為特殊字符代替‘%’
位置匹配
(1)不帶編號,即“{}”
(2)帶數(shù)字編號,可調(diào)換順序,即“{1}”、“{2}”
(3)帶關(guān)鍵字,即“{a}”、“{tom}”
>>> print('{} {}'.format('hello','world')) #不帶字段
hello world>>> print('{0} {1}'.format('hello','world')) #帶數(shù)字編號
hello world>>> print('{0} {1} {0}'.format('hello','world')) #打亂順序
hello world hello>>> print('{1} {1} {0}'.format('hello','world'))
world world hello>>> print('{a} {tom} {a}'.format(tom='hello',a='world')) #帶關(guān)鍵字
world hello world
>>> '{0}, {1}, {2}'.format('a', 'b', 'c')'a, b, c'
>>> '{}, {}, {}'.format('a', 'b', 'c') #3.1+版本支持
'a, b, c'
>>> '{2}, {1}, {0}'.format('a', 'b', 'c')'c, b, a'
>>> '{2}, {1}, {0}'.format(*'abc') #可打亂順序
'c, b, a'
>>> '{0}{1}{0}'.format('abra', 'cad') #可重復(fù)
'abracadabra'
通過位置匹配
通過位置匹配
>>> 'Coordinates: {latitude}, {longitude}'.format(latitude='37.24N', longitude='-115.81W')'Coordinates: 37.24N, -115.81W'
>>> coord = {'latitude': '37.24N', 'longitude': '-115.81W'}>>> 'Coordinates: {latitude}, {longitude}'.format(**coord)'Coordinates: 37.24N, -115.81W'
通過名字匹配
>>> c = 3-5j
>>> ('The complex number {0} is formed from the real part {0.real}'...'and the imaginary part {0.imag}.').format(c)'The complex number (3-5j) is formed from the real part 3.0 and the imaginary part -5.0.'
>>> classPoint:
...def __init__(self, x, y):
... self.x, self.y=x, y
...def __str__(self):
...return 'Point({self.x}, {self.y})'.format(self=self)
...>>> str(Point(4, 2))'Point(4, 2)'
通過對象屬性匹配
>>>
>>> coord = (3, 5)>>> 'X: {0[0]}; Y: {0[1]}'.format(coord)'X: 3; Y: 5'
>>> a = {'a': 'test_a', 'b': 'test_b'}>>> 'X: {0[a]}; Y: {0[b]}'.format(a)'X: test_a; Y: test_b'
通過下標(biāo)或key匹配參數(shù)
格式轉(zhuǎn)換
'b' - 二進(jìn)制。將數(shù)字以2為基數(shù)進(jìn)行輸出。
'c' - 字符。在打印之前將整數(shù)轉(zhuǎn)換成對應(yīng)的Unicode字符串。
'd' - 十進(jìn)制整數(shù)。將數(shù)字以10為基數(shù)進(jìn)行輸出。
'o' - 八進(jìn)制。將數(shù)字以8為基數(shù)進(jìn)行輸出。
'x' - 十六進(jìn)制。將數(shù)字以16為基數(shù)進(jìn)行輸出,9以上的位數(shù)用小寫字母。
'e' - 冪符號。用科學(xué)計(jì)數(shù)法打印數(shù)字。用'e'表示冪。
'g' - 一般格式。將數(shù)值以fixed-point格式輸出。當(dāng)數(shù)值特別大的時(shí)候,用冪形式打印。
'n' - 數(shù)字。當(dāng)值為整數(shù)時(shí)和'd'相同,值為浮點(diǎn)數(shù)時(shí)和'g'相同。不同的是它會根據(jù)區(qū)域設(shè)置插入數(shù)字分隔符。
'%' - 百分?jǐn)?shù)。將數(shù)值乘以100然后以fixed-point('f')格式打印,值后面會有一個(gè)百分號。
>>> print('{0:b}'.format(3))11
>>> print('{:c}'.format(20))>>> print('{:d}'.format(20))20
>>> print('{:o}'.format(20))24
>>> print('{:x}'.format(20))14
>>> print('{:e}'.format(20))2.000000e+01
>>> print('{:g}'.format(20.1))20.1
>>> print('{:f}'.format(20))20.000000
>>> print('{:n}'.format(20))20
>>> print('{:%}'.format(20))2000.000000%
>>>
進(jìn)階用法
進(jìn)制轉(zhuǎn)換
>>> #format also supports binary numbers
>>> "int: {0:d}; hex: {0:x}; oct: {0:o}; bin: {0:b}".format(42)'int: 42; hex: 2a; oct: 52; bin: 101010'
>>> #with 0x, 0o, or 0b as prefix:
>>> "int: {0:d}; hex: {0:#x}; oct: {0:#o}; bin: {0:#b}".format(42) #在前面加“#”,則帶進(jìn)制前綴
'int: 42; hex: 0x2a; oct: 0o52; bin: 0b101010'
2進(jìn)制、8進(jìn)制、10進(jìn)制、16進(jìn)制
左中右對齊及位數(shù)補(bǔ)全
(1)< (默認(rèn))左對齊、> 右對齊、^ 中間對齊、= (只用于數(shù)字)在小數(shù)點(diǎn)后進(jìn)行補(bǔ)齊
(2)取位數(shù)“{:4s}”、"{:.2f}"等
>>> print('{} and {}'.format('hello','world')) #默認(rèn)左對齊
hello andworld>>> print('{:10s} and {:>10s}'.format('hello','world')) #取10位左對齊,取10位右對齊
hello andworld>>> print('{:^10s} and {:^10s}'.format('hello','world')) #取10位中間對齊
hello andworld>>> print('{} is {:.2f}'.format(1.123,1.123)) #取2位小數(shù)
1.123 is 1.12
>>> print('{0} is {0:>10.2f}'.format(1.123)) #取2位小數(shù),右對齊,取10位
1.123 is 1.12
>>> '{:<30}'.format('left aligned') #左對齊
'left aligned'
>>> '{:>30}'.format('right aligned') #右對齊
'right aligned'
>>> '{:^30}'.format('centered') #中間對齊
'centered'
>>> '{:*^30}'.format('centered') #使用“*”填充
'***********centered***********'
>>>'{:0=30}'.format(11) #還有“=”只能應(yīng)用于數(shù)字,這種方法可用“>”代替
'000000000000000000000000000011'
左中右對齊及位數(shù)補(bǔ)齊
正負(fù)符號顯示
>>> '{:+f}; {:+f}'.format(3.14, -3.14) #總是顯示符號
'+3.140000; -3.140000'
>>> '{: f}; {: f}'.format(3.14, -3.14) #若是+數(shù),則在前面留空格
'3.140000; -3.140000'
>>> '{:-f}; {:-f}'.format(3.14, -3.14) #-數(shù)時(shí)顯示-,與'{:f}; {:f}'一致
'3.140000; -3.140000'
正負(fù)符號顯示 %+f, %-f, 和 % f的用法
百分?jǐn)?shù)%
>>> points = 19
>>> total = 22
>>> 'Correct answers: {:.2%}'.format(points/total)'Correct answers: 86.36%'
百分?jǐn)?shù)%
時(shí)間
>>> importdatetime>>> d = datetime.datetime(2010, 7, 4, 12, 15, 58)>>> '{:%Y-%m-%d %H:%M:%S}'.format(d)'2010-07-04 12:15:58'
時(shí)間
逗號","分隔金錢,沒以前進(jìn)位
>>> '{:,}'.format(1234567890)'1,234,567,890'
逗號","分隔金錢
占位符嵌套
>>> for align, text in zip('<^>', ['left', 'center', 'right']):
...'{0:{fill}{align}16}'.format(text, fill=align, align=align)
...'left<<<<<<<<<<<<'
'^^^^^center^^^^^'
'>>>>>>>>>>>right'
>>>
>>> octets = [192, 168, 0, 1]>>> '{:02X}{:02X}{:02X}{:02X}'.format(*octets)'C0A80001'
>>> int(_, 16) #官方文檔給出來的,無法在IDLE復(fù)現(xiàn)
3232235521
>>>
>>> width = 5
>>> for num in range(5,12):
...for base in 'dXob':
...print('{0:{width}{base}}'.format(num, base=base, width=width), end=' ')
...print()
...5 5 5 101
6 6 6 110
7 7 7 111
8 8 10 1000
9 9 11 1001
10 A 12 1010
11 B 13 1011
占位符嵌套
占位符%s和%r
"""replacement_field ::= "{" [field_name] ["!" conversion] [":" format_spec] "}"
conversion ::= "r" | "s" | "a"
這里只有三個(gè)轉(zhuǎn)換符號,用"!"開頭。
"!r"對應(yīng) repr();"!s"對應(yīng) str(); "!a"對應(yīng)ascii()。"""
>>> "repr() shows quotes: {!r}; str() doesn't: {!s}".format('test1', 'test2')"repr() shows quotes: 'test1'; str() doesn't: test2" #輸出結(jié)果是一個(gè)帶引號,一個(gè)不帶
占位符%s和%r
format的用法變形
#a.format(b)
>>> "{0} {1}".format("hello","world")'hello world'
#f"xxxx"#可在字符串前加f以達(dá)到格式化的目的,在{}里加入對象,此為format的另一種形式:
>>> a = "hello"
>>> b = "world"
>>> f"{a} "
'hello world'name= 'jack'age= 18sex= 'man'job= "IT"salary= 9999.99
print(f'my name is {name.capitalize()}.')print(f'I am {age:*^10} years old.')print(f'I am a {sex}')print(f'My salary is {salary:10.3f}')#結(jié)果
my name isJack.
I am****18****years old.
I am a man
My salaryis 9999.990
參考o(jì)r轉(zhuǎn)發(fā)
總結(jié)
以上是生活随笔為你收集整理的python语言format用法_python基础_格式化输出(%用法和format用法)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: eui自带字体是什么_阿里巴巴居然出品了
- 下一篇: split函数python 未定义_Py