相關鏈接
1) 手動Manual String Formatting。此方式能實現的效果有限,一般只能做簡單的格式處理。此方式在後文中不做詳細介紹。
通過如下方法進行對齊操作
center(): 居中對齊,第1個參數指定寬度,第2個參數指定填充符,第2個參數是可選的,默認是空格,如果設置寬度小於實際寬度則返回原字符串
ljust(): 左對齊,第1個參數指定寬度,第2個參數指定填充符,第2個參數是可選的,默認是空格,如果設置寬度小於實際寬度則返回原字符串
rjust(): 右對齊,第1個參數指定寬度,第2個參數指定填充符,第2個參數是可選的,默認是空格,如果設置寬度小於實際寬度則返回原字符串
zfill(): 右對齊,左邊用0填充,第1個參數指定寬度,如果設置寬度小於實際寬度則返回原字符串
案例# 對齊格式輸出
for x in range(1, 11):
print(str(x).rjust(2), str(x * x).rjust(3), end=' ')
# Note use of 'end' on previous line
print(str(x * x * x).rjust(4))
''' 1 1 1 2 4 8 3 9 27 4 16 64 5 25 125 6 36 216 7 49 343 8 64 512 9 81 729 10 100 1000 '''
2) %-formattingOld string formatting。此方式從一開始就在Python語言中。
其效果類似於在 C 語言中使用 %format % values%sprintf()
。一些歷史遺留bug導致可能會無法正確顯示元組(tuples)和字典(dictionaries),官方文檔中建議使用str.format() 。
案例
# 1.順序定位
print('%s has %03d quote types.' % ('Python', 2)) # Python has 002 quote types.
# 2.關鍵字參數
print('%(language)s has %(number)03d quote types.' %
{
'language': "Python", "number": 2}) # Python has 002 quote types.
3) str.format()The String format() method。此方式從Python2.6開始引入。可以在Python官方更新日志中的PEP3101找到str.format()的詳細用法。str.format() 是對 %-formatting 的改進。它使用正常的函數調用語法,並且可以通過正在轉換為字符串的對象上的 format() 方法進行擴展。
案例""" @author GroupiesM @date 2022/6/28 16:27 @introduction """
# 1.順序定位
print(1, 'We are the {} who say "{}!"'.format('knights', 'Ni')) # We are the knights who say "Ni!"
# 2.數字定位
print(2, '{0} and {1}'.format('spam', 'eggs')) # spam and eggs
print(2, '{1} and {0}'.format('spam', 'eggs')) # eggs and spam
# 3.關鍵字參數
print(3, 'This {food} is {adjective}.'.format(
food='spam', adjective='absolutely horrible')) # This spam is absolutely horrible.
# 4.數字定位 + 關鍵字參數
print(4, 'The story of {0}, {1}, and {other}.'.format(
'Bill', 'Manfred', other='Georg')) # The story of Bill, Manfred, and Georg.
# 5.拆分字典
table = {
'Sjoerd': 4127, 'Jack': 4098, 'Dcab': 8637678}
print(5, 'Jack: {0[Jack]:d}; Sjoerd: {0[Sjoerd]:d}; ''Dcab: {0[Dcab]:d}'
.format(table)) # Jack: 4098; Sjoerd: 4127; Dcab: 8637678
# 6.解壓字典
table = {
'Sjoerd': 4127, 'Jack': 4098, 'Dcab': 8637678}
print(6, 'Jack: {Jack}; Sjoerd: {Sjoerd}; Dcab: {Dcab}'
.format(**table)) # Jack: 4098; Sjoerd: 4127; Dcab: 8637678
# 7.解壓字典(指定類型)
table = {
'Sjoerd': 4127, 'Jack': 4098, 'Dcab': 8637678}
print(7, 'Jack: {Jack:d}; Sjoerd: {Sjoerd:d}; Dcab: {Dcab:d}'
.format(**table)) # Jack: 4098; Sjoerd: 4127; Dcab: 8637678
# 8.拆分列表
lst = [4127, 4098, 8637678]
print(8, 'Jack: {0[1]:d}; Sjoerd: {0[0]:d}; ''Dcab: {0[2]:d}'
.format(lst)) # Jack: 4098; Sjoerd: 4127; Dcab: 8637678
# 9.解壓列表(默認排序)
lst = [4127, 4098, 8637678]
print(9, 'Jack: {}; Sjoerd: {}; ''Dcab: {}'
.format(*lst)) # Jack: 4127; Sjoerd: 4098; Dcab: 8637678
# 10.解壓列表(指定排序)
lst = [4127, 4098, 8637678]
print(10, 'Jack: {1}; Sjoerd: {0}; ''Dcab: {2}'
.format(*lst)) # Jack: 4098; Sjoerd: 4127; Dcab: 8637678
# 11.解壓集合(默認排序)
st = {
4127, 4098, 8637678}
print(11, 'Jack: {}; Sjoerd: {}; ''Dcab: {}'
.format(*st)) # Jack: 4127; Sjoerd: 4098; Dcab: 8637678
# 12.解壓集合(指定排序)
st = {
4127, 4098, 8637678}
print(12, 'Jack: {1}; Sjoerd: {0}; ''Dcab: {2}'
.format(*st)) # Jack: 4098; Sjoerd: 4127; Dcab: 8637678
# 13.拆分元組
tup = (4127, 4098, 8637678)
print(13, 'Jack: {0[1]:d}; Sjoerd: {0[0]:d}; ''Dcab: {0[2]:d}'
.format(tup)) # Jack: 4098; Sjoerd: 4127; Dcab: 8637678
# 14.解壓元組(默認排序)
tup = (4127, 4098, 8637678)
print(14, 'Jack: {}; Sjoerd: {}; ''Dcab: {}'
.format(*tup)) # Jack: 4127; Sjoerd: 4098; Dcab: 8637678
# 15.解壓元組(指定排序)
tup = (4127, 4098, 8637678)
print(14, 'Jack: {1}; Sjoerd: {0}; ''Dcab: {2}'
.format(*tup)) # Jack: 4098; Sjoerd: 4127; Dcab: 8637678
# 16.遍歷格式化
for x in range(1, 11):
print(15, '{0:2d} {1:3d} {2:4d}'.format(x, x * x, x * x * x))
''' 1 1 1 2 4 8 3 9 27 4 16 64 5 25 125 6 36 216 7 49 343 8 64 512 9 81 729 10 100 1000 '''
4) f-StringFormatted String Literalsf-String是指在字符串中直接使用Python變量,需要在字符串前加f或F標注。這種方式對數據處理更加靈活,甚至可以將變量代入函數後,輸出結果。
案例# 1. 3.8新特性
name, score = '張三', 45.6
print(f'name={
name}, score={
score:.3f}') # Python3.6 name=張三, score=45.600
print(f'{
name=}, {
score=:.3f}') # Python3.8 name='張三', score=45.600
# 2.pi保留小數點後三位
import math
print(f'The value of pi is approximately {
math.pi:.3f}.') # The value of pi is approximately 3.142.
# 3.列對齊
table = {
'Sjoerd': 4127, 'Jack': 4098, 'Dcab': 7678}
for name, phone in table.items():
print(f'{
name:10} ==> {
phone:10d}')
''' Sjoerd ==> 4127 Jack ==> 4098 Dcab ==> 7678 '''
# 4.格式轉換 【ascii()=!a】、【str()=!s】、【repr=!r】
animals = 'eels'
print(f'My hovercraft is full of {
animals}.') # My hovercraft is full of eels.
print(f'My hovercraft is full of {
animals!r}.') # My hovercraft is full of 'eels'.
# 5.嵌套計算 name='張三', (height+2)=182.40
name, age, height = '張三', 20, 180.4
print(f'{
name=}, {
(height+2)=:.2f}')
# 6.嵌套函數 name='張三', sum(height,3)=183.40
name, age, height = '張三', 20, 180.4
def sum(a, b):
return a + b
print(f'{
name=}, {
sum(height,3)=:.2f}')
百度搜不清楚的資料,或者不明確的,一切以官方文檔+本地測試結果為准:
The Python Tutorial-Python教程
Fancier Output Formatting-更漂亮的輸出格式
關於 Format Specification Mini-Language,其格式在str.format()以及f-String是類似通用的,但也有一些細微差別。這部分摘自官方文檔,僅做翻譯。
語法樹 format_spec ::= [[fill]align][sign][#][0][width][grouping_option][.precision][type]
填充符 fill ::= <any character>
對齊方式 align ::= "<" | ">" | "=" | "^"
符號選項 sign ::= "+" | "-" | " "
總長度 width ::= digit+
分組選項 grouping_option ::= "_" | ","
有效數字 precision ::= digit+
數據類型 type ::= "b" | "c" | "d" | "e" | "E" | "f" | "F" | "g" | "G" | "n" | "o" | "s" | "x" | "X" | "%"
align-對齊方式1.字符型
2.整數型(%-formatting不支持參數b,%-formatting不支持參數不填)
3.浮點型
1. %-formatting
""" 格式一: 1.一個參數:print('我叫%s' % name) # 可以省略括號 2.多個參數:print('我叫%s,今年%d歲' % (name, age)) """
name, age, height = '張三', 20, 180.4
print('%s' % name) # 張三
print('%s--%f' % (name, height)) # 張三--180.400000
""" 格式二: 1.一個參數:print('%(name)s' % {'name': '張三'}) 2.多個參數:print('%(name)s--%(age)d' % {'name': '張三', 'age': 18}) """
name, age, height = '張三', 20, 180.4
print('%(name)s' % {
'name': '張三'}) # 張三
print('%(name)s--%(age)d' % {
'name': '張三', 'age': 18}) # 張三--18
2. str.format()
"""方式一:指定參數"""
'''1.1 不設置指定位置,按默認順序'''
name, age, height = '張三', 20, 180.4
print(1.1, '我叫{},我叫{},今年{}歲,身高{}'.format(name, name, age, height, )) # 我叫張三,我叫張三,今年20歲,身高180.4
'''1.2 設置指定位置'''
name, age, height = '張三', 20, 180.4
print(1.2, '我叫{0},我叫{0},今年{1}歲,身高{2}'.format(name, age, height)) # 我叫張三,我叫張三,今年20歲,身高180.4
'''1.3 設置參數 網站名:菜鳥教程, 地址 www.runoob.com '''
name, age, height = '張三', 20, 180.4
print(1.3, '網站名:{name}, 地址 {url}'.format(name="菜鳥教程", url="www.runoob.com"))
'''方式二:通過序列獲取'''
'''2.1 通過字典dict設置參數(解包) 網站名:菜鳥教程, 地址 www.runoob.com '''
name, age, height = '張三', 20, 180.4
site_dict = {
"name": "菜鳥教程", "url": "www.runoob.com"}
print(2.1, "網站名:{name}, 地址 {url}".format(**site_dict)) # 使用**解包操作
'''2.2 通過字典dict設置參數(不解包) 網站名:菜鳥教程, 地址 www.runoob.com '''
name, age, height = '張三', 20, 180.4
site_dict = {
"name": "菜鳥教程", "url": "www.runoob.com"}
print(2.2, "網站名:{0[name]}, 地址 {0[url]}".format(site_dict)) # "0" 是固定寫法 使用[]訪問字典
'''2.3 通過列表list索引設置參數 網站名:菜鳥教程, 地址 www.runoob.com '''
name, age, height = '張三', 20, 180.4
my_list = ['菜鳥教程', 'www.runoob.com']
print(2.3, "網站名:{}, 地址 {}".format(*my_list)) # 使用*解包操作
'''2.4 通過列表list索引設置參數 網站名:菜鳥教程, 地址 www.runoob.com '''
name, age, height = '張三', 20, 180.4
my_list = ['菜鳥教程', 'www.runoob.com']
print(2.4, "網站名:{0[0]}, 地址 {0[1]}".format(my_list)) # "0" 是固定寫法的
3. f-String
# 小寫f
name, age, height = '張三', 20, 180.4
print(f'我叫{
name},我叫{
name},今年{
age}歲,身高{
height}') # 我叫張三,我叫張三,今年20歲,身高180.4
# 大寫F
name, age, height = '張三', 20, 180.4
print(F'我叫{
name},我叫{
name},今年{
age}歲,身高{
height}') # 我叫張三,我叫張三,今年20歲,身高180.4
""" @author GroupiesM @date 2022/6/22 14:20 @introduction 字符串格式化-方式1 %【不推薦】 1.簡介 %號格式化字符串的方式從Python誕生之初就已經存在。 目前,Python官方沒有棄用這種方式,但也不推薦這種方式。 2.%格式符語法 語法一:'${flags}%${width}${.percision}%${typecode}' % ${content} 語法二:%(${name})${#}${flags}${width}${.precision}%${typecode} % ${
{'k1':v1,'k2':v2,...}} ${name} 【可選】,用於選擇指定的key ${#} 【可選】對於八進制(oct)、十六進制(hex),如果加上#,會顯示0o/0x,否則不顯示 ${flags} 【可選】,對齊方式、正負號,可供選擇的值有:【+、-、 、0】 + 右對齊:正數的加正號,負數的加負號 - 左對齊:正數前沒有負號,負數前加負號 空格 右對齊:正數前加空格,負數前加負號; 0 右對齊:正數前無符號,負數前加負號;用0填充空白處 ${width} 【可選】,總長度(不足位數補空格) ${.precision} 【可選】,有效位數 ${typecode} 【必選】,數據類型、格式 1)傳入"字符串類型"的參數 s,獲取傳入的對象 str() 方法的返回值(字符串-供人閱讀),並將其格式化到指定位置 r,獲取傳入對象的 repr() 方法的返回值(字符串-供解釋器使用),並將其格式化到指定位置 空白,未指定類型,則默認s 2)傳入"整數類型"的參數 c,獲取傳入對象的 chr() 方法的返回值(unicode對應值),10進制范圍為0 <= i <=1114111 --%格式符:沒有b(2進制數字)方法,format格式化可以支持-- d,10進制整數 o,獲取傳入對象的 oct() 方法的返回值(8進制數字),並將其格式化到指定位置 x,獲取傳入對象的 hex() 方法的返回值(16進制數字),並將其格式化到指定位置(英文小寫) X,獲取傳入對象的 hex() 方法的返回值(16進制數字),並將其格式化到指定位置(英文大寫) 3)傳入"浮點型或小數類型"的參數 e,將整數、浮點數轉換成科學計數法,並將其格式化到指定位置(小寫e) E,將整數、浮點數轉換成科學計數法,並將其格式化到指定位置(大寫E) f,將整數、浮點數轉換成浮點數表示,並將其格式化到指定位置(默認保留小數點後6位) F,同上 g,自動調整將整數、浮點數轉換成 浮點型或科學計數法表示(超過6位數用科學計數法),並將其格式化到指定位置(如果是科學計數則是e;) G,自動調整將整數、浮點數轉換成 浮點型或科學計數法表示(超過6位數用科學計數法),並將其格式化到指定位置(如果是科學計數則是E;) %,將數字乘以100,加上百分號,默認保留6位小數。當字符串中存在格式化標志時,需要用%%表示一個百分號。 ${content} 【必選】,要格式化的內容 """
'''完整語法示例1: -16.9 1) ${flag} = '0' 右對齊:正數前無符號,負數前加負號;用0填充空白處 2) ${width} = '10' 總長度(不足位數補空格) 3) ${precision} = '5,有效位數 4) ${typecode} = 'f','數據類型float '''
print('%(money)#010.5f' % {
'money': -16.9})# -016.90000
'''完整語法示例2: 100 1) ${flag} = '+' 右對齊:正數的加正號,負數的加負號 2) ${#} = '#' 對於二進制(bin)、八進制(oct)、十六進制(hex),如果加上#,會顯示0b/0o/0x,否則不顯示 3) ${width} = '10' 總長度(不足位數補空格) 4) ${precision} = '5',有效位數 5) ${typecode} = 'f',數據類型float '''
print('%(money)#+10d' % {
'money': 100}) # +0o00144
""" @author GroupiesM @date 2022/6/23 16:26 @introduction 2.%格式符語法 語法一:'${flags}%${width}${.percision}%${typecode}' % ${content} 語法二:%(${name})${#}${flags}${width}${.precision}%${typecode} % ${
{'k1':v1,'k2':v2,...}} """
name, age, money, height = '張三', 20, -20, 180.4
''' 對齊方式、正負號${flags}:【可選】 不填 右對齊:正數前加空格,負數前加負號 + 右對齊:正數的加正號,負數的加負號 - 左對齊:正數前沒有負號,負數前加負號 空格 右對齊:正數前加空格,負數前加負號 0 右對齊:正數前無符號,負數前加負號;用0填充空白處 P.S 1.只有當${width}>內容長度時,對齊方式才有效 2.不同${typecode}會影響對齊的方式,下面針對 s字符串、d整數、f浮點型 三種類型測試 '''
print('----s字符串----')
print(1, '%10s' % name)
print(2, '%+10s' % name)
print(3, '%-10s' % name)
print(4, '% 10s' % name)
print(5, '%010s' % name)
''' 1 張三 2 張三 3 張三 4 張三 5 張三 '''
print('----d整數----')
print(1, '%10d' % money)
print(2, '%+10d' % money)
print(3, '%-10d' % money)
print(4, '% 10d' % money)
print(5, '%010d' % money)
''' 1 -20 2 -20 3 -20 4 -20 5 -000000020 '''
print('----f浮點型----')
print(1, '%15f' % height)
print(2, '%+15f' % height)
print(3, '%-15f' % height)
print(4, '% 15f' % height)
print(5, '%015f' % height)
''' 1 180.400000 2 +180.400000 3 180.400000 4 180.400000 5 00000180.400000 '''
""" @author GroupiesM @date 2022/6/23 16:26 @introduction 2.%格式符語法 語法一:'${flags}%${width}${.percision}%${typecode}' % ${content} 語法二:%(${name})${#}${flags}${width}${.precision}%${typecode} % ${
{'k1':v1,'k2':v2,...}} """
name, age, money, height = '張三', 20, -20, 180.4
''' 總長度${width}:【可選】 %s 不指定長度 %1s ${width} < 字符長度,不生效 %2s ${width} = 字符長度,不生效 %10 ${width} > 字符長度,生效 '''
print('%s' % name)
print('%1s' % name)
print('%2s' % name)
print('%10s' % name)
''' 張三 張三 張三 張三 '''
""" @author GroupiesM @date 2022/6/23 16:26 @introduction 2.%格式符語法 語法一:'${flags}%${width}${.percision}%${typecode}' % ${content} 語法二:%(${name})${#}${flags}${width}${.precision}%${typecode} % ${
{'k1':v1,'k2':v2,...}} """
name, age, money, height = '張三', 20, -20, 180.4
''' 有效位數${.precision}:【可選】 1.字符串:'張三',${.precision}會截取字符串 %s 不指定${precision} %.1s ${.precision} < 字符長度,從左到右截取1位 '張' %.2s ${.precision} = 字符長度,不生效 %.10 ${.precision} > 字符長度,不生效 2.整數:'23',${.precision}超過長度部分在前面補0 %d 不指定${precision} %.1d ${.precision} < 整數長度,不生效 %.2d ${.precision} = 整數長度,不生效 %.10 ${.precision} > 整數長度,超出部分在前面補0 3.浮點型 '180.45',${precision}表示有效位數(其中浮點型表示:小數點後位數),默認${precision}=6 %f 不指定${precision},保留6位小數 '180.450000' %.1f ${.precision} < 字符長度,保留1位小數 '180.4' %.2f ${.precision} = 字符長度,保留2位小數 '180.45' %.15f ${.precision} > 字符長度,保留15位小數 '180.449999999999989' '''
print('----s字符串----')
print(1, '%s' % name)
print(2, '%.1s' % name)
print(3, '%.2s' % name)
print(4, '%.10s' % name)
''' 1 張三 2 張 3 張三 4 張三 '''
print('----s字符串(指定長度)----')
print(1, '%10s' % name)
print(2, '%10.1s' % name)
print(3, '%10.2s' % name)
print(4, '%10.10s' % name)
''' 1 張三 2 張 3 張三 4 張三 '''
print('----d整數----')
print(1, '%d' % age)
print(2, '%.1d' % age)
print(3, '%.2d' % age)
print(4, '%.5d' % age)
''' 1 23 2 23 3 23 4 00023 '''
print('----d整數(指定長度)----')
print(1, '%10d' % age)
print(2, '%10.1d' % age)
print(3, '%10.2d' % age)
print(4, '%10.5d' % age)
''' 1 23 2 23 3 23 4 00023 '''
print('----f浮點型----') # 浮點型按照小數點後位數算起
print(1, '%f' % height) # 浮點型不指定 默認保留小數點後6位
print(2, '%.1f' % height)
print(3, '%.2f' % height)
print(4, '%.15f' % height)
''' 1 180.400000 2 180.4 3 180.40 4 180.400000000000006 '''
print('----f浮點型(指定長度)----')
print(1, '%10f' % height) # 浮點型不指定 默認保留小數點後6位
print(2, '%10.1f' % height)
print(3, '%10.2f' % height)
print(4, '%10.15f' % height)
''' 1 180.400000 2 180.4 3 180.40 4 180.400000000000006 '''
""" @author GroupiesM @date 2022/6/23 16:26 @introduction 2.%格式符語法 語法一:'${flags}%${width}${.percision}%${typecode}' % ${content} 語法二:%(${name})${#}${flags}${width}${.precision}%${typecode} % ${
{'k1':v1,'k2':v2,...}} ${typecode} 【必選】,數據類型、格式 1)傳入"字符串類型"的參數 s,獲取傳入的對象 str() 方法的返回值(字符串-供人閱讀),並將其格式化到指定位置 r,獲取傳入對象的 repr() 方法的返回值(字符串-供解釋器使用),並將其格式化到指定位置 空白,未指定類型,則默認s 2)傳入"整數類型"的參數 c,獲取傳入對象的 chr() 方法的返回值(unicode對應值),10進制范圍為0 <= i <=1114111 --%格式符:沒有b(2進制數字)方法,format格式化可以支持-- d,10進制整數 o,獲取傳入對象的 oct() 方法的返回值(8進制數字),並將其格式化到指定位置 x,獲取傳入對象的 hex() 方法的返回值(16進制數字),並將其格式化到指定位置(英文小寫) X,獲取傳入對象的 hex() 方法的返回值(16進制數字),並將其格式化到指定位置(英文大寫) 3)傳入"浮點型或小數類型"的參數 e,將整數、浮點數轉換成科學計數法,並將其格式化到指定位置(小寫e) E,將整數、浮點數轉換成科學計數法,並將其格式化到指定位置(大寫E) f,將整數、浮點數轉換成浮點數表示,並將其格式化到指定位置(默認保留小數點後6位) F,同上 g,自動調整將整數、浮點數轉換成 浮點型或科學計數法表示(超過6位數用科學計數法),並將其格式化到指定位置(如果是科學計數則是e;) G,自動調整將整數、浮點數轉換成 浮點型或科學計數法表示(超過6位數用科學計數法),並將其格式化到指定位置(如果是科學計數則是E;) %,當字符串中存在格式化標志時,需要用 %%表示一個百分號 """
name, age, money, height = '張三', ord('🫡'), -20, 180.4
''' 數據類型${typecode}:【必選】(未測試全部參數) c,獲取傳入對象的 chr() 方法的返回值(unicode對應值),10進制范圍為0 <= i <=1114111 o,獲取傳入對象的 oct() 方法的返回值(8進制數字),並將其格式化到指定位置 x,獲取傳入對象的 hex() 方法的返回值(16進制數字),並將其格式化到指定位置 '''
'''參數c -> 獲取unicode'''
# 獲取🫡的unicode值 : ord('🫡') -> 129761
print('c_1',chr(age)) # 🫡
print('c_2','%c' % age) # 🫡
'''參數o -> 8進制'''
print('o_1', oct(age)) # 0o375341
print('o_2', '%o' % age) # 375341
'''參數x -> 16進制'''
print('x_1', hex(age)) # 0x1fae1
print('x_2', '%x' % age) # 1fae1
""" @author GroupiesM @date 2022/6/23 16:26 @introduction 2.%格式符語法 語法一:'${flags}%${width}${.percision}%${typecode}' % ${content} 語法二:%(${name})${#}${flags}${width}${.precision}%${typecode} % ${
{'k1':v1,'k2':v2,...}} ${#} 【可選】對於八進制(oct)、十六進制(hex),如果加上#,會顯示0o/0x,否則不顯示 """
name, age, money, height = '張三', ord('🫡'), -20, 180.4
''' 8,16進制符號${#}:【可選】 P.S 1.僅對${typecode} in [o,x,X]時生效,但其他情況添加不會報錯 '''
'''參數o -> 8進制'''
print('8_1', oct(age)) # 0o375341
print('8_2', '%#o' % age) # 0o375341
print('8-3', '%o' % age) # 375341
'''參數x -> 16進制'''
print('16_1', hex(age)) # 0x1fae1
print('16_3', '%#x' % age) # 0x1fae1
print('16_2', '%x' % age) # 1fae1
更多詳細介紹參考:str.Format()語法-官方文檔
""" @author GroupiesM @date 2022/6/24 10:26 @introduction 字符串格式化-方式2 format【推薦】 1.簡介 Python2.6 開始,新增了一種格式化字符串的函數 str.format(),它增強了字符串格式化的功能。 基本語法是通過 {} 和 : 來代替以前的 % format 函數可以接受不限個參數,位置可以不按順序。 2.format格式話語法 語法:'{:${format1}}...{:${format2}}...'.format(${values}) 舉例:'{:>10s}--{:<10s}'.format('hello','python') 結果: hello--python 解讀: {:>10s} 對應 {${format1}} {:<10s} 對應 {${format2}} 'hello','python' 對應 ${values} 。 ${values}與${format}組合有大概6種賦值寫法,這裡只是其中一種 3.${format}的組成 1) ${value}為字符類型時 - (沒有${sign}和${,}) ${fill}${align}${#}${width}${.percision}%${typecode} 2) ${value}為整數類型時 - (沒有${.percision}) ${fill}${align}${sign}${#}${width}${,}%${typecode} 3) ${value}為浮點型時 ${fill}${align}${sign}${#}${width}${,}${.percision}%${typecode} ${fill} 【可選】,空白處填充的字符 ${align} 【可選】,對齊方式、正負號,可供選擇的值有:【<、>、=、^】 < : 左對齊 > : 右對齊(默認) = : 內容右對齊,將符號放置在填充字符的左側,且只對數字類型有效。 ^ : 內容居中 ${sign} 【可選】,有無符號數字,可供選擇的值有【+、-、空格】 + : 正號加+,負號加- - : 正號不變,負號加- 空格: 正號空格,符號加- ${#} 【可選】對於二進制(bin)、八進制(oct)、十六進制(hex),如果加上#,會顯示0b/0o/0x,否則不顯示 ${width} 【可選】,總長度(不足位數補空格) ${,} 【可選】為數字添加分隔符,如:1,000,000 ${precision} 【可選】,有效位數 ${typecode} 【可選】,數據類型、格式 1)傳入"字符串類型"的參數 s,獲取傳入的對象 str() 方法的返回值(字符串-供人閱讀),並將其格式化到指定位置 r,獲取傳入對象的 repr() 方法的返回值(字符串-供解釋器使用),並將其格式化到指定位置 空白,未指定類型,則默認s 2)傳入"整數類型"的參數 c,獲取傳入對象的 chr() 方法的返回值(unicode對應值),10進制范圍為0 <= i <=1114111 --%格式符:沒有b(2進制數字)方法,format格式化可以支持-- b,獲取傳入對象的 byte() 方法的返回值(2進制數字),並將其格式化到指定位置 d,10進制整數 o,獲取傳入對象的 oct() 方法的返回值(8進制數字),並將其格式化到指定位置 x,獲取傳入對象的 hex() 方法的返回值(16進制數字),並將其格式化到指定位置(英文小寫) X,獲取傳入對象的 hex() 方法的返回值(16進制數字),並將其格式化到指定位置(英文大寫) 3)傳入"浮點型或小數類型"的參數 e,將整數、浮點數轉換成科學計數法,並將其格式化到指定位置(小寫e) E,將整數、浮點數轉換成科學計數法,並將其格式化到指定位置(大寫E) f,將整數、浮點數轉換成浮點數表示,並將其格式化到指定位置(默認保留小數點後6位) F,同上 g,自動調整將整數、浮點數轉換成 浮點型或科學計數法表示(超過6位數用科學計數法),並將其格式化到指定位置(如果是科學計數則是e;) G,自動調整將整數、浮點數轉換成 浮點型或科學計數法表示(超過6位數用科學計數法),並將其格式化到指定位置(如果是科學計數則是E;) n,同'g' %,百分比,將數字乘以100,加上百分號,默認保留6位小數 ${content} 【必選】,要格式化的內容 """
'''format格式化 完整語法示例1: 16.9 1) ${fill} = ' ' 空白處填充的字符 2) ${align} = '>' 右對齊(默認) 3) ${sign} = '+' 正號加+,負號加- 4) ${width} = '10' 總長度(不足位數補${fill}) 5) ${.precision} = '5',有效位數 6) ${typecode} = 'f',數據類型float '''
print('{: >+010.5f}'.format(16.9)) # +16.90000
'''format格式化 完整語法示例2: 10000 1) ${fill} = ' ' 空白處填充的字符 2) ${align} = '>' 右對齊(默認) 3) ${sign} = '+' 正號加+,負號加- 4) ${#} 對於二進制(bin)、八進制(oct)、十六進制(hex),如果加上#,會顯示0b/0o/0x,否則不顯示 5) ${width} = '10' 總長度(不足位數補${fill}) 6) ${.precision} = '5',有效位數 7) ${typecode} = 'o',數據類型octonary(二進制) '''
print('{: >+#10o}'.format(10000)) # +0o23420
'''format格式化 完整語法示例3: 1850000 1) ${fill} = ' ' 空白處填充的字符 2) ${align} = '>' 右對齊(默認) 3) ${sign} = '+' 正號加+,負號加- 4) ${#} 對於二進制(bin)、八進制(oct)、十六進制(hex),如果加上#,會顯示0b/0o/0x,否則不顯示 5) ${width} = '14' 總長度(不足位數補${fill}) 6) ${,} = ',' 為數字添加分隔符,如:1,000,000 7) ${.precision} = '2',有效位數 8) ${typecode} = 'f',數據類型float '''
print('{: >+#14.2f}'.format(18500.05432)) # +18500.05
print('{: >+#14,.2f}'.format(18500.05432)) # +18,500.05
'''測試結果:可以看到總長度14,數字分隔符${,}也算入了總長度 +1850000 +1,850,000 '''
format 格式""" @author GroupiesM @date 2022/6/24 17:40 @introduction 1) ${value}為字符類型時 - (沒有${sign}和${,}) ${fill}${align}${#}${width}${.percision}%${typecode} 2) ${value}為整數類型時 - (沒有${.percision}) ${fill}${align}${sign}${#}${width}${,}%${typecode} 3) ${value}為浮點型時 ${fill}${align}${sign}${#}${width}${,}${.percision}%${typecode} """
''' format格式${format}:【可選】 P.S 1.以下幾種情況的${format}添加位置不同 2.使用 對齊方式${fill} 做測試對比 '''
site_dict, my_list = {
"name": "菜鳥教程", "url": "www.runoob.com"}, ['菜鳥教程', 'www.runoob.com']
name, age, height = '張三', 20, 180.4
'''1.1 不設置指定位置,按默認順序 1.1a 我叫張三,我叫張三,今年20歲,身高180.4 1.1b 我叫***張三,我叫***張三,今年***20歲,身高180.4 '''
print('1.1a', '我叫{},我叫{},今年{}歲,身高{}'.format(name, name, age, height))
print('1.1b', '我叫{:*>5},我叫{:*>5},今年{:*>5}歲,身高{:*>5}'.format(name, name, age, height)) # 居右,長度5,填充*
'''1.2 設置指定位置 {0}、{1} 1.2a 我叫張三,我叫張三,今年20歲,身高180.4 1.2b 我叫@張三@@,我叫@張三@@,今年@[email protected]@歲,身高180.4 '''
print('1.2a', '我叫{0},我叫{0},今年{1}歲,身高{2}'.format(name, age, height))
print('1.2b', '我叫{0:@^5},我叫{0:@^5},今年{1:@^5}歲,身高{2:@^5}'.format(name, age, height)) # 居中,長度5,填充@
'''1.3 設置參數 {name}、{url} 1.3a 網站名:菜鳥教程, 地址 www.runoob.com,利潤-123 1.3b 網站名:菜鳥教程, 地址 www.runoob.com,利潤-$$123 1.3c 網站名:菜鳥教程, 地址 www.runoob.com,利潤$$-123 '''
print('1.3a', '網站名:{name}, 地址 {url},利潤{profit}'.format(name="菜鳥教程", url="www.runoob.com", profit=-123))
print('1.3b','網站名:{name}, 地址 {url},利潤{profit:$=6}'.format(name="菜鳥教程", url="www.runoob.com", profit=-123)) # =右對齊,僅適用於數字
print('1.3c','網站名:{name}, 地址 {url},利潤{profit:$>6}'.format(name="菜鳥教程", url="www.runoob.com", profit=-123)) # >右對齊2,長度6,填充$
'''2.1 通過字典dict設置參數 2.1a 網站名:菜鳥教程, 地址 www.runoob.com 2.1b 網站名:菜鳥教程 , 地址 www.runoob.com '''
print('2.1a', "網站名:{name}, 地址 {url}".format(**site_dict))
print('2.1b', "網站名:{name:<5}, 地址 {url:<5}".format(**site_dict)) # 居左,長度5,填充空格
'''2.2 通過列表list索引設置參數 2.2a 網站名:菜鳥教程, 地址 www.runoob.com 2.2b 網站名:菜鳥教程🫤, 地址 www.runoob.com '''
print('2.2a', "網站名:{}, 地址 {}".format(*my_list))
print('2.2b', "網站名:{:🫤<5s}, 地址 {:🫤<5s}".format(*my_list)) # 居左,長度5,填充🫤
'''2.3 通過列表list索引設置參數 2.3a 網站名:菜鳥教程, 地址 www.runoob.com 2.3b 網站名:菜鳥教程, 地址 www.runoob.com '''
print('2.3a', "網站名:{0[0]}, 地址 {0[1]}".format(my_list))
print('2.3b', "網站名:{0[0]:<5s}, 地址 {0[1]:<5s}".format(my_list)) # 居左,長度5,填充
""" @author GroupiesM @date 2022/6/24 16:56 @introduction 1) ${value}為字符類型時 - (沒有${sign}和${,}) ${fill}${align}${#}${width}${.percision}%${typecode} 2) ${value}為整數類型時 - (沒有${.percision}) ${fill}${align}${sign}${#}${width}${,}%${typecode} 3) ${value}為浮點型時 ${fill}${align}${sign}${#}${width}${,}${.percision}%${typecode} """
name, age, money, height, = '張三', 20, -20, 180.4
''' 填充字符${fill}:【可選】 P.S 1.${fill} 的前提是 ${align},否則報錯 2.${align} 的前提是 ${width} ,不指定不會報錯,但對齊方式不會生效 3.${fill} 只能指定一位 4.${fill} 不指定時,默認為空格 5.內容長度<${width}時,觸發填充動作;反之不執行任何操作 '''
print('1', '我叫{},我叫{},今年{}歲,身高{}'.format(name, name, age, height, ))
print('2', '我叫{:>5},我叫{:>5},今年{:>5}歲,身高{:>5}'.format(name, name, age, height, )) # 居右,長度5,不指定填充
print('3', '我叫{:*>5},我叫{:*>5},今年{:*>5}歲,身高{:*>5}'.format(name, name, age, height, )) # 居右,長度5,填充*
print('4', '我叫{:*>5},我叫{:>5},今年{:>5}歲,身高{:>5}'.format(name, name, age, height, )) # 居右,長度5,填充
'''測試結果 1 我叫張三,我叫張三,今年20歲,身高180.4 2 我叫 張三,我叫 張三,今年 20歲,身高180.4 3 我叫***張三,我叫***張三,今年***20歲,身高180.4 4 我叫***張三,我叫張三,今年20歲,身高180.4 '''
""" @author GroupiesM @date 2022/6/24 16:57 @introduction 1) ${value}為字符類型時 - (沒有${sign}和${,}) ${fill}${align}${#}${width}${.percision}%${typecode} 2) ${value}為整數類型時 - (沒有${.percision}) ${fill}${align}${sign}${#}${width}${,}%${typecode} 3) ${value}為浮點型時 ${fill}${align}${sign}${#}${width}${,}${.percision}%${typecode} """
name, age, money, height, = '張三', 20, -20, 180.4
''' 對齊方式${align}:【可選】 < : 左對齊 > : 右對齊(默認) = : 內容右對齊,將符號放置在填充字符的左側,且只對數字類型有效。 ^ : 內容居中 P.S 1.不同語法格式的添加位置不同,下面會依次測試 2.${align} 的前提是 ${width} ,不指定不會報錯,但對齊方式不會生效 3.${align} 中的右對齊(=),僅對數字類型有效,參數類型錯誤會報錯 '''
'''字符型string 1 我叫 張三 2 我叫張三 4 我叫 張三 '''
print('1', '我叫{:>5}'.format(name))
print('2', '我叫{:<5}'.format(name))
# print('3', '我叫{:=5}'.format(name)) # = 僅對數字類有效
print('4', '我叫{:^5}'.format(name))
'''數字型int 1 余額 -20 2 余額-20 3 余額- 20 4 余額 -20 '''
print('1', '余額{:>5}'.format(money))
print('2', '余額{:<5}'.format(money))
print('3', '余額{:=5}'.format(money)) # = 僅對數字類有效
print('4', '余額{:^5}'.format(money))
""" @author GroupiesM @date 2022/6/24 16:57 @introduction 1) ${value}為字符類型時 - (沒有${sign}和${,}) ${fill}${align}${#}${width}${.percision}%${typecode} 2) ${value}為整數類型時 - (沒有${.percision}) ${fill}${align}${sign}${#}${width}${,}%${typecode} 3) ${value}為浮點型時 ${fill}${align}${sign}${#}${width}${,}${.percision}%${typecode} """
name, age, money, height = '張三', 20, -20, 180.4
''' 數字正負號${sign}:【可選】 + : 正號加+,負號加- - : 正號不變,負號加- 空格: 正號空格,符號加- P.S 1.不同語法格式的添加位置不同,下面會依次測試 2.${align} 的前提是 ${width} ,不指定不會報錯,但對齊方式不會生效 3.${sign} 僅對數字類型有效,參數類型錯誤會報錯 '''
print('1', '年齡{:},余額{:}'.format(age, money))
print('2', '年齡{:+},余額{:+}'.format(age, money))
print('3', '年齡{:-},余額{:-}'.format(age, money))
print('4', '年齡{: },余額{: }'.format(age, money))
print('5', '年齡{:$>+10},余額{:$>+10}'.format(age, money))
'''測試結果 1 年齡20,余額-20 2 年齡+20,余額-20 3 年齡20,余額-20 4 年齡 20,余額-20 5 年齡$$$$$$$+20,余額$$$$$$$-20 '''
""" @author GroupiesM @date 2022/6/24 16:58 @introduction 1) ${value}為字符類型時 - (沒有${sign}和${,}) ${fill}${align}${#}${width}${.percision}%${typecode} 2) ${value}為整數類型時 - (沒有${.percision}) ${fill}${align}${sign}${#}${width}${,}%${typecode} 3) ${value}為浮點型時 ${fill}${align}${sign}${#}${width}${,}${.percision}%${typecode} """
name, age, money, height = '張三', 20, -2.4, 180.4
''' 總長度${width}:【可選】 %s 不指定長度 %1s ${width} < 字符長度,不生效 %2s ${width} = 字符長度,不生效 %10 ${width} > 字符長度,生效 P.S 1. 不指定${align}默認為">",右對齊 2. 不指定${fill} 默認為"空格" 3. 負數中的"-"也計算入總長度中,長度為1 4. 浮點類型點的"."也計算入總長度中,長度為1 '''
print('1', '{}'.format(money))
print('2', '{:1}'.format(money))
print('3', '{:2}'.format(money))
print('4', '{:3}'.format(money))
print('5', '{:4}'.format(money))
print('6', '{:5}'.format(money)) # "-2.4" 字符長度為4,指定${width}>=5時才會觸發填充操作
'''測試結果 1 -2.4 2 -2.4 3 -2.4 4 -2.4 5 -2.4 6 -2.4 '''
""" @author GroupiesM @date 2022/6/24 16:58 @introduction 1) ${value}為字符類型時 - (沒有${sign}和${,}) ${fill}${align}${#}${width}${.percision}%${typecode} 2) ${value}為整數類型時 - (沒有${.percision}) ${fill}${align}${sign}${#}${width}${,}%${typecode} 3) ${value}為浮點型時 ${fill}${align}${sign}${#}${width}${,}${.percision}%${typecode} """
name, age, money, height = '張三', 20, 100000, 11240980.456789657
''' 數字分隔符${,}:【可選】 為數字添加分隔符,如:1,000,000 P.S 1. typecode為整數、浮點類型時才可以添加 2. 小數點前每隔3位數字自動添加一個, '''
print('1', '{:,}'.format(money))
print('3', '{:,}'.format(height))
print('3', '{:,.11}'.format(height))
'''測試結果 1 100,000 3 11,240,980.456789657 3 11,240,980.457 '''
""" @author GroupiesM @date 2022/6/24 16:59 @introduction 1) ${value}為字符類型時 - (沒有${sign}和${,}) ${fill}${align}${#}${width}${.percision}%${typecode} 2) ${value}為整數類型時 - (沒有${.percision}) ${fill}${align}${sign}${#}${width}${,}%${typecode} 3) ${value}為浮點型時 ${fill}${align}${sign}${#}${width}${,}${.percision}%${typecode} """
''' 有效位數${.precision}:【可選】 1.字符串:'張三',${.precision}會截取字符串 %s 不指定${precision} %.1s ${.precision} < 字符長度,從左到右截取1位 '張' %.2s ${.precision} = 字符長度,不生效 %.10 ${.precision} > 字符長度,不生效 2.整數:'23',${.precision},-str.format()不支持給整數指定${percision}。(%-formatting可以給整數指定${percision}) 3.浮點型 '180.45',${precision}表示有效位數(其中浮點型表示:小數點後位數),默認${precision}=6 %f 不指定${precision},保留6位小數 '180.450000' %.1f ${.precision} < 字符長度,保留1位小數 '180.4' %.2f ${.precision} = 字符長度,保留2位小數 '180.45' %.15f ${.precision} > 字符長度,保留15位小數 '180.449999999999989' '''
print('----s字符串----')
name = '張三'
print(1, '{:}'.format(name))
print(2, '{:.1}'.format(name))
print(3, '{:.2}'.format(name))
print(4, '{:.10}'.format(name))
''' 1 張三 2 張 3 張三 4 張三 '''
print('----s字符串(指定長度)----')
name = '張三'
print(1, '{:10}'.format(name))
print(2, '{:10.1}'.format(name))
print(3, '{:10.2}'.format(name))
print(4, '{:10.10}'.format(name))
''' 1 張三 2 張 3 張三 4 張三 '''
print('----f浮點型----') # 浮點型按照小數點後位數算起
height = 180.4
print(1, '{:f}'.format(height)) # # 浮點型不指定 默認保留小數點後6位
print(2, '{:.1f}'.format(height))
print(3, '{:.2f}'.format(height))
print(4, '{:.10f}'.format(height))
''' 1 180.400000 2 180.4 3 180.40 4 180.4000000000 '''
print('----f浮點型(指定長度)----')
print(1, '{:10f}'.format(height)) # 浮點型不指定 默認保留小數點後6位
print(2, '{:10.1f}'.format(height))
print(3, '{:10.2f}'.format(height))
print(4, '{:10.10f}'.format(height))
''' 1 180.400000 2 180.4 3 180.40 4 180.4000000000 '''
""" @author GroupiesM @date 2022/6/24 16:58 @introduction 1) ${value}為字符類型時 - (沒有${sign}和${,}) ${fill}${align}${#}${width}${.percision}%${typecode} 2) ${value}為整數類型時 - (沒有${.percision}) ${fill}${align}${sign}${#}${width}${,}%${typecode} 3) ${value}為浮點型時 ${fill}${align}${sign}${#}${width}${,}${.percision}%${typecode} """
name, age, money, height = '張三', 20, -20, 180.4
''' 2,8,16進制符號${#}:【可選】 P.S 1.僅對${typecode} in [b,o,x,X] 時生效,但其他情況添加不會報錯 '''
'''2進制'''
print('{:b}'.format(age)) # 10100
print('{:#b}'.format(age)) # 0b10100
'''8進制'''
print('{:o}'.format(age)) # 24
print('{:#o}'.format(age)) # 0o24
'''16進制'''
print('{:x}'.format(age)) # 14
print('{:#x}'.format(age)) # 0x14
""" @author GroupiesM @date 2022/6/24 16:59 @introduction 1) ${value}為字符類型時 - (沒有${sign}和${,}) ${fill}${align}${#}${width}${.percision}%${typecode} 2) ${value}為整數類型時 - (沒有${.percision}) ${fill}${align}${sign}${#}${width}${,}%${typecode} 3) ${value}為浮點型時 ${fill}${align}${sign}${#}${width}${,}${.percision}%${typecode} ${typecode} 【必選】,數據類型、格式 1)傳入"字符串類型"的參數 s,獲取傳入的對象 str() 方法的返回值(字符串-供人閱讀),並將其格式化到指定位置 r,獲取傳入對象的 repr() 方法的返回值(字符串-供解釋器使用),並將其格式化到指定位置 空白,未指定類型,則默認s 2)傳入"整數類型"的參數 c,獲取傳入對象的 chr() 方法的返回值(unicode對應值),10進制范圍為0 <= i <=1114111 --%格式符:沒有b(2進制數字)方法,format格式化可以支持-- b,獲取傳入對象的 byte() 方法的返回值(2進制數字),並將其格式化到指定位置 d,10進制整數 o,獲取傳入對象的 oct() 方法的返回值(8進制數字),並將其格式化到指定位置 x,獲取傳入對象的 hex() 方法的返回值(16進制數字),並將其格式化到指定位置(英文小寫) X,獲取傳入對象的 hex() 方法的返回值(16進制數字),並將其格式化到指定位置(英文大寫) 3)傳入"浮點型或小數類型"的參數 e,將整數、浮點數轉換成科學計數法,並將其格式化到指定位置(小寫e) E,將整數、浮點數轉換成科學計數法,並將其格式化到指定位置(大寫E) f,將整數、浮點數轉換成浮點數表示,並將其格式化到指定位置(默認保留小數點後6位) F,同上 g,自動調整將整數、浮點數轉換成 浮點型或科學計數法表示(超過6位數用科學計數法),並將其格式化到指定位置(如果是科學計數則是e;) G,自動調整將整數、浮點數轉換成 浮點型或科學計數法表示(超過6位數用科學計數法),並將其格式化到指定位置(如果是科學計數則是E;) n,同'g' %,百分比,將數字乘以100,加上百分號,默認保留6位小數 """
name, age, money, height = '張三', ord('🫡'), -20, 180.4
''' 數據類型${typecode}:【可選】(未測試全部參數) 空白,不填默認為s,字符串類型 c,獲取傳入對象的 chr() 方法的返回值(unicode對應值),10進制范圍為0 <= i <=1114111 o,獲取傳入對象的 oct() 方法的返回值(8進制數字),並將其格式化到指定位置 x,獲取傳入對象的 hex() 方法的返回值(16進制數字),並將其格式化到指定位置 '''
'''參數不填 -> 字符默認為s、整數默認為d、浮點默認為g'''
print(' _1', age) # 129761
print(' _2','{:}'.format(age)) # 129761
'''參數b -> 2進制'''
print('b_1', bin(age)) # 0b11111101011100001
print('b_2','{:b}'.format(age)) # 11111101011100001
'''參數o -> 8進制'''
print('o_1', oct(age)) # 0o375341
print('o_2','{:o}'.format(age)) # 375341
'''參數x -> 16進制'''
print('x_1', hex(age)) # 0x1fae1
print('x_2','{:x}'.format(age)) # 1fae1
""" @author GroupiesM @date 2022/6/27 11:06 @introduction 大部分情況下,%格式符合format格式化都能實現相同功能,以下案例中使用兩種格式輸出相同格式結果 但也有些不同的地方:關於測試出的不同點總結如下: 1) ${typecode}='b':表示二進制 %:不支持 format:支持 2) ${typecode}='':空白不填 %:不支持 format:支持,不填默認為s(字符串) 3) ${.percision}: %:整數時添加${.percision},表示有效位數 format:整數時不可以添加 4) ${fill}:手動指定分隔符 %:不支持 format:支持 5) ${,}:為數字添加分隔符,如:1,000,000 %:不支持 format:支持 """
'''%格式符 完整語法示例1: 16.9 1) ${flag} = '+' 右對齊:正數的加正號,負數的加負號 2) ${width} = '10' 總長度(不足位數補空格) 3) ${precision} = '5',有效位數 4) ${typecode} = 'f',數據類型float '''
print('%(money)+10.5f' % {
'money': 16.9}) # +16.90000
'''format格式化 完整語法示例1: 16.9 1) ${fill} = ' ' 空白處填充的字符 2) ${align} = '>' 右對齊(默認) 3) ${sign} = '+' 正號加+,負號加- 4) ${width} = '10' 總長度(不足位數補${fill}) 5) ${precision} = '5',有效位數 6) ${typecode} = 'f',數據類型float '''
print('{: >+010.5f}'.format(16.9)) # +16.90000
'''%格式符 完整語法示例2: 10000 1) ${flag} = + 右對齊:正數的加正號,負數的加負號 2) ${#} 對於二進制(bin)、八進制(oct)、十六進制(hex),如果加上#,會顯示0b/0o/0x,否則不顯示 3) ${width} = 10 總長度(不足位數補空格) 4) ${precision} = 5,有效位數 5) ${typecode} = f,數據類型float '''
print('%(money)#+10o' % {
'money': 10000}) # +0o23420
'''format格式化 完整語法示例2: 10000 1) ${fill} = ' ' 空白處填充的字符 2) ${align} = '>' 右對齊(默認) 3) ${sign} = '+' 正號加+,負號加- 4) ${#} 對於二進制(bin)、八進制(oct)、十六進制(hex),如果加上#,會顯示0b/0o/0x,否則不顯示 5) ${width} = '10' 總長度(不足位數補${fill}) 6) ${precision} = '5',有效位數 7) ${typecode} = 'f',數據類型float '''
print('{: >+#10o}'.format(10000)) # +0o23420
語法詳細介紹參考:PEP 3101 – 高級字符串格式化
22/06/28
M
Today, lets share a simple Pyt
Better reading experience Pyth