Python基礎學習篇-3- 如何使用 各種佔位符 和 %方式 Format方式 進行格式化輸出?
使用python進行格式化輸出時,問題遇到一些小問題,所以徹底做一次大總結。
在python中進行格式化輸出有兩種方式:
百分號方式、Format方式
說明:
(本文示例使用Python3.6環境)
下文介紹的Format()方式是比較新的函式, 但是目前大多數的 Python 程式碼仍然使用 % 運算子,所以兩種方式都要掌握。Python官網說%這種舊式的格式化最終會從該語言中移除,所以 應該更多的使用 Format()方式。
一、百分號
方式
語法格式:
(其中【】內的欄位為可選項,其它為必選項)
% [(name)] [flags] [width] .[precision] typecode
(name) 可選,用於選擇指定的key
flags 可選,可供選擇的值有:
Flags
作用1
作用2
+
右對齊
正數前加正號,負數前加負號
-
左對齊
正數前無符號,負數前加負號
空格
右對齊
正數前加空格,負數前加負號
0
右對齊
正數前無符號,負數前加負號 用0填充空白處
width 可選,佔有寬度
.precision 可選,小數點後保留的位數
typecode 必選,要替換的值型別,可供選擇的值有:
typecode
作用
s
獲取傳入物件的__str__方法的返回值,並將其格式化到指定位置
d
將整數、浮點數轉換成 十 進製表示,並將其格式化到指定位置
e
將整數、浮點數轉換成科學計數法,並將其格式化到指定位置(小寫e)
E
將整數、浮點數轉換成科學計數法,並將其格式化到指定位置(大寫E)
f
將整數、浮點數轉換成浮點數表示,並將其格式化到指定位置(預設保留小數點後6位)
F
同上
o
將整數轉換成 八 進製表示,並將其格式化到指定位置
g
自動調整將整數、浮點數轉換成 浮點型或科學計數法表示(超過6位數用科學計數法),並將其格式化到指定位置(如果是科學計數則是e;)
G
作用同上,只是如果是科學計數則是E
c
整數:將數字轉換成其unicode對應的值,10進位制範圍為 0 <= i <= 1114111字元,並將字元新增到指定位置
r
獲取傳入物件的__repr__方法的返回值,並將其格式化到指定位置
%
當字串中存在格式化標誌時,需要用 %%表示一個百分號
注:Python中百分號格式化是不存在自動將整數轉換成二進位制表示的方式
百分號方式格式化示例:
>>> print("a = a%+d" %2)
a = a+2
>>> print("a = a%+d" %-2)
a = a-2
>>>
>>>> print("a = a%-d" %2)
a = a2
>>> print("a = a%-d" %-2)
a = a-2
>>>
>>> print("a = a% d" %2)
a = a 2
>>> print("a = a% d" %-2)
a = a-2
>>>
>>> print("a = a%0d" %2)
a = a2
>>> print("a = a%0d" %-2)
a = a-2
>>>
>>>
>>> print("i am %s" %"angle")
i am angle
>>> print("i am %s age %d" %("angle",18))
i am angle age 18
>>> print("i am %(name)s age %(age)d" %{"name":"angle", "age":18})
i am angle age 18
>>>
>>>
>>> print("percent is %.2f"%99.99999)
percent is 100.00
>>> print("percent is %.2f"%99.123999)
percent is 99.12
>>> print("percent is %(aa).2f"%{"aa": 99.15,})
percent is 99.15
>>> print("percent is %(aa).2f %%"%{"aa": 99.17234,})
percent is 99.17 %
>>>
二、Format方式格式化示例
可用於格式化輸出,也可單獨對資料、字串進行格式化
1
語法格式:
[ [fill] align] [sign] [#] [0] [width] [,] [.precision] [type]
fill 【可選】空白處填充的字元
align 【可選】對齊方式(需配合width使用)
align
作用
<
內容左對齊
>
內容右對齊(預設)
=
內容右對齊,將符號放置在填充字元的左側,且只對數字型別有效。 即:符號+填充物+數字
^
內容居中
sign 【可選】有無符號數字
align
作用
+
正號加正,負號加負
-
正號不變,負號加負
空格
正號空格,負號加負
# 【可選】對於二進位制、八進位制、十六進位制,如果加上#,會顯示 0b/0o/0x,否則不顯示
, 【可選】為數字新增分隔符,如:1,000,000
width 【可選】格式化位所佔寬度
.precision 【可選】小數位保留精度
type 【可選】格式化型別
typecode
作用
傳入字串型別的引數時:
s
格式化字串型別資料
空白
未指定型別,則預設是None,同s
傳整數型別的引數時:
b
將10進位制整數自動轉換成2進製表示然後格式化
c
將10進位制整數自動轉換為其對應的unicode字元
d
十進位制整數
o
將10進位制整數自動轉換成8進製表示然後格式化
x
將10進位制整數自動轉換成16進製表示然後格式化(小寫x)
X
將10進位制整數自動轉換成16進製表示然後格式化(大寫X)
傳入“ 浮點型或小數型別 ”的引數:
e
轉換為科學計數法(小寫e)表示,然後格式化
E
轉換為科學計數法(大寫E)表示,然後格式化
f
轉換為浮點型(預設小數點後保留6位)表示,然後格式化
F
轉換為浮點型(預設小數點後保留6位)表示,然後格式化
g
自動在e和f中切換
G
自動在E和F中切換
%
顯示百分比(預設顯示小數點後6位)
Format方式格式化示例:
>>>**大括號及其裡面的字元 (稱作格式化欄位) 將會被 format() 中的引數替換**
>>> print("i am {}, age {}, {}".format("yolanda", 18, 'hello'))
i am yolanda, age 18, hello
>
>>> print("i am {}, age {}, {}".format(*["yolanda", 18, 'hello']))
i am yolanda, age 18, hello
>
>>> print("i am {}, age {}, {}".format(*["yolanda", 18]))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: tuple index out of range
>>>**在大括號中的數字用於指向傳入物件在 format() 中的位置**
>>> print("i am {0}, age {1}, name {0}".format(*["yolanda", 18]))
i am yolanda, age 18, name yolanda
>
>>> print("i am {0}, age {1}, name {0}".format("yolanda", 18))
i am yolanda, age 18, name yolanda
>
>>> print("i am {0}, age {1}, name {0}".format(["yolanda", 18]))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: tuple index out of range
>>>
>>>**如果在 format() 中使用了關鍵字引數, 那麼它們的值會指向使用該名字的引數**
>>> print("i am {name}, age {age}, name {name}".format(name="yolanda", age=18))
i am yolanda, age 18, name yolanda
>
>>> print("i am {name}, age {age}, name {name}".format(*{"name": "yolanda", "age":18}))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'name'
>>> print("i am {name}, age {age}, name {name}".format(**{"name": "yolanda", "age":18}))
i am yolanda, age 18, name yolanda
>>>
>>> print("i am {0[0]}, age {0[1]}, name {0[2]}; you are {1[0]}, age {1[1]}, name {1[2]}".format([1,2,3], [11,22,33]))
i am 1, age 2, name 3; you are 11, age 22, name 33
>>>
>>>
>>> print("i am {:s}, age {:d}, money {:f}".format("yolanda", 18, 9999999.999))
i am yolanda, age 18, money 9999999.999000
>
>>> print("i am {:s}, age {:d}, money {:f}".format(*["yolanda", 18, 9999999.999]))
i am yolanda, age 18, money 9999999.999000
>
>>> print("i am {name:s}, age {age:d}".format(name="yolanda", age=18))
i am yolanda, age 18
>
>>> print("i am {name:s}, age {age:d}".format({"name":"yolanda", age:18}))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'age' is not defined
>
>>> print("i am {name:s}, age {age:d}".format({"name":"yolanda", "age":18}))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'name'
>
>>> print("i am {name:s}, age {age:d}".format(**{"name":"yolanda", "age":18}))
i am yolanda, age 18
>>>
>>>
>>> print("number: {:b},{:o},{:d},{:x},{:X},{:%}".format(10,10,10,10,10,18.8888,2))
number: 1010,12,10,a,A,1888.880000%
>>>
>>>
>>> print("number: {0:b},{0:o},{0:d},{0:x},{0:X},{0:%}".format(10,10,10,10,10,18.8888,2))
number: 1010,12,10,a,A,1000.000000%
>>> print("number: {0:b},{0:o},{0:d},{0:x},{0:X},{0:%}".format(8))
number: 1000,10,8,8,8,800.000000%
>>>
>>> print("number: {num:b},{num:o},{num:d},{num:x},{num:X},{num:%}".format(num=6))
number: 110,6,6,6,6,600.000000%
>>>
>>> print ("Name:%10s Age:%8d Height:%8.2f"%("yolanda",25,1.83))
Name: yolanda Age: 25 Height: 1.83
>>>
>>> print ("Name:%-10s Age:%-8d Height:%-8.2f"%("yolanda",25,1.83))
Name:yolanda Age:25 Height:1.83
>>>
>>> print ("Name:%-10s Age:%08d Height:%08.2f"%("yolanda",25,1.83))
Name:yolanda Age:00000025 Height:00001.83
>>>
>#使用format單獨對資料進行格式化
>>> format(0.0015,'.2e')
'1.50e-03'
>>>
>>> a = 0.035
>>> b = format(a, '.2%')
>>> b
'3.50%'
>>>
>#其它的格式使用方法類似,不再一一演示
>
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69942496/viewspace-2654894/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- wpf兩種佔位符實現方式
- Python 字串格式化輸出方式Python字串格式化
- python基礎篇-輸入和輸出Python
- python的幾種輸出方式Python
- c/c++各種進位制輸出C++
- Python 佔位符格式化詳解Python
- python切片如何作為佔位符使用Python
- 關於python中format佔位符中的 {!} 引數PythonORM
- Python3:格式化輸出之format方法PythonORM
- JS 基礎篇(一):建立物件的四種方式JS物件
- Python進行開發的兩種方式Python
- 適當的方式模仿UITextField佔位符的顏色UI
- Python基礎學習篇Python
- FTP的傳輸有兩種方式:ASCII傳輸模式和二進位制資料傳輸模式FTPASCII模式
- python的幾種輸入方式Python
- C#使用string.Format格式化字串中的佔位符替換為相應的值C#ORM字串
- SEO各種執行方式難度排名
- [轉]Python格式化字串的4種方式Python字串
- 2.9Python基礎語法(7):轉義字元&佔位符Python字元
- Python基礎 - 字串格式化 (%操作符)Python字串格式化
- 如何使用 Python 進行字串格式化Python字串格式化
- python裡的tplt什麼意思 Python的format格式化輸出PythonORM
- python 99乘法表,佔位基礎複習Python
- Java基礎:執行緒的三種建立方式Java執行緒
- [Python]學習基礎篇:檔案和目錄Python
- 如何使用常用的6種方式對資料進行轉換(二)
- 學習Python要多久?三種方式學習週期介紹!Python
- 學習Python語言選擇哪種方式好?Python
- 學習Python哪種方式合適?可以自學嗎?Python
- python 各種模組學習Python
- Kettle筆記3-三種執行方式:圖形/命令列/API筆記命令列API
- VC++基礎 格式化時間輸出C++
- Guice和JavaConfig:使用Annotation進行反轉控制的兩種方式GUIJava
- 聊聊 SpringBoot 中的兩種佔位符:@*@ 和 ${*}Spring Boot
- HTTPS-各種加密方式HTTP加密
- N 種僅僅使用 HTML/CSS 實現各類進度條的方式HTMLCSS
- TensorFlow常量、變數和佔位符詳解(學習筆記)變數筆記
- 網路基礎學習---各種概念