格式化輸出
1. 轉換字串
如果在字串中,使用由「%」符號開頭,而以c、s、d、x、f、e或g型態字元結束,中間依需求可參雜 +、-、數字以及小數點等修飾字元所成的集合稱為「轉換字串」。轉換字串是當print()函式將字串內資料顯示時,碰到轉換字串時,會由接在後面的引數串列中依序將對應的引數,以轉換字串所指定的資料格式在此處顯示其值。
2. str.format()方法
-
Python 2.6版後提供字串的format()方法,也可以用來格式化輸出內容。format()是屬於字串物件的方法。語法:print(’ …{[n] }… ‘.format(引數列))
字串內要代入的文字以大括弧「{n}」作代表,
n值由0開始依序編寫,執行時會依照編號,依序代入括弧內的引數;亦可不填編號,程式執行時會讀取對應引數列依序代入。引數列中的引數,可以使用常值或是變數。[例]字串的格式化輸出(檔名:
format_1.py)s1 = '電車月票 ' s2 = 1280 print('項目:{0} 金額: {1}元'.format(s1,s2))- 編號可以重複使用,例如:
print('{0}{0}{1}'.format('吃','菓')),執行時會顯示 「吃吃菓」 - 編號必要時也可以不依照順序,例如:
print('{0}{1}{0}'.format('排','一')),執行時會顯示 「排一排」
- 編號可以重複使用,例如:
-
如果覺得使用編號不夠直覺,也可以使用有意義的欄位名稱,語法如下:
語法:print(...(欄位名稱).. ..'.format(欄位名稱=引數))[例] 字串的格式化輸出。(檔名:
format_2.py)str1 = '張三' num1 = 17 print('我是{name}今年{age}歲'.format(name = str1, age = num1)) # 我是張三今年17歲說明
- 欄位名稱可以利用字典來定義,字典名稱前要加
「**」,例如 :
data ={‘title’:‘茂谷柑’,‘price’:60}
print(‘{title}每斤 {price} 元’.format(**data)), 會顯示 「茂谷柑每斤 60 元」。 - 也可以使用串列定義引數,使用時編號來代表串列名稱,例如:
data = [“黑葉荔枝”,“85”]
print(‘{0[0]}每斤 {0[1]} 元’.format(data)), 會顯示「黑葉荔枝每斤 85 元」。
- 欄位名稱可以利用字典來定義,字典名稱前要加
-
大括弧內的編號或欄位名稱後,可以加上轉換字串來指定輸出格式,來強化輸出的功能。語法如下:
語法:
print('...{編號|欄位名稱:轉換字串}...'.format(參數列))轉換字串前要以「:」起始,轉換字串的語法如下:
語法::[修飾字元][寬度][.小數位數]型別字元-
型別字元用來指定輸出資料的型別、型別必須與相對應引數的資料型別一致,下表是常用的型別字元:

-
轉換字串中常用的修飾字元如下表所示:

[例] 字串的格式化輸出。(檔名:
format_3.py)s = '字串' i = 1000 p = 0.666666 print('{:.2f}'.format(p)) print('{:,}'.format(i*i)) print('{:.2%}'.format(p)) print('{:.0f}'.format(p)) print('|{:6}|'.format(s)) print('|{:6}|'.format(i)) print('|{:>6}|'.format(s)) print('|{:<6}|'.format(i)) print('{:$^6}'.format(i)) print('{0}{{}}'.format('顯示{}'))
-
-
Python 3.6版之後新增了格式化字串常值(Formatted String Literal)簡稱為f-strings,可以直接將運算式嵌入在字串常值中,語法如下:print(f'字串{變數名稱:轉換字串}')[例] 輸出兩個整數相加的值。
x, y = 10, 15 print(f'{x}+{y}={x+y}') #輸出:10+15=25[例] 輸出英文姓名(使用
capitalize()函式將第一個字母大寫)。name = 'jack' print(f'我的名字是{name.capitalize()}')簡例 (檔名:
interest.py)
使用者輸入存款金額(整數)、年利率(浮點數)和年數(整數)後,會計算並顯示
單利的本利和。輸出時金額使用千分位顯示,年利率顯示到小數二位,年數的寬
度設為3,本利和輸出格式為寬度設為9,左側空白自動補零,整數部分用千分位
顯示。# -*- coding: utf-8 -*- money = int(input('請輸入存款金額:')) rate = float(input('請輸入年利率:')) years = int(input('請輸入年數:')) print(f'{money:,}元年利率{rate:.2f}% \n{years:3}年', end='') print(f'本利和為{money+money*rate/100*years:09,}元')
3. format()函式
format()函式是Python 內建的函式,可以用來格式化輸出內容。語法如下:
語法:format(value, 格式字串)
-
value引數是要格式化的資料,資料型別可以是數值或字串。 -
格式字串引數是指定格式的字串,其用法和前面介紹字串的
format()方法大致相同。 -
format()函式傳回值的資料型別為字串。[例] 使用
format()函式格式化輸出:(檔名:format_4.py)print(format(123.45, '.1f')) # 輸出: 123.5 print(format('Python', '>8s')) # 輸出 : △△Python(△ 表空格) print(format('金額', '^6s') + format(12345.678, '012,.2f') + '元') # 輸出: △△金額△△0,012,345.68元(△ 表空格)
4. 常用的字串方法
Python 內建許多字串的方法,幾乎所有常用的字串操作都包含其中。下表中字串方法皆以s1及s2 兩個字串常值為例來說明:
檔名: str_fun.py
s1 = 'python內建函式可以對字串做字串轉換、字串搜尋、字串分割。'
s2 = 'hello world!'








相關主題與延伸閱讀
- 2. 字串與運算子:格式化輸出前,須先了解字串的基本操作方式。
- 1. 字串資料型別:本篇格式化輸出的操作對象即為字串資料型別。
- 6. print() 輸出函式:格式化輸出通常會搭配
print()函式來顯示結果。