TShopping

 找回密碼
 註冊
搜索
查看: 943|回復: 0
打印 上一主題 下一主題

[分享] Python Format String 字串格式化整理(寫入空格)

[複製鏈接]
跳轉到指定樓層
1#
發表於 2021-8-19 12:20:25 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
 
Push to Facebook
 Python 從 2.6 開始新增了 .format() 的字串格式化輸出函數,本篇筆記了各種輸出的範例

基本操作
 .format() 主要搭配 {} 作為替代符進行輸出,{} 的位置會被後方 format 所帶的參數所取代。預設會依照順序輸出,但也可以用數字指定位置、或者是直接給予名稱做指定

 不指定位置,依序輸出

  1. print("{} {} {}".format("A", "B", "C"))
  2. # A B C
複製代碼

 用數字指定位置

  1. print("{2} {0} {1}".format("A", "B", "C"))
  2. # C A B
複製代碼

 用名稱指定位置

  1. print("{a} {c} {b}".format((a="A", b="B", c="C")))
  2. # A C B
複製代碼

  
數值格式化及對齊
 格式化的方式是在後方加上”:“及”格式符”,可用的格式符如下

{:d}        : 整數
{:f}        : 浮點數
{:e} {:E}   : 科學記號,例如 1.020000e+01,大小寫就代表 "e" 顯示的大小寫
{:x} {:X}   : 十六進位,大小寫分別表示 A ~ F 要顯示的大小寫
{:o}        : 八進位
{:b}        : 二進位
{:>}}        : 以百分比的方式輸出

 另外可以使用 > ^ < 這三種符號以及數值來搭配佔位及對齊。注意: 數值型別預設是靠右對齊,字串型別預設是靠左對齊

{:>8d}      : 整數靠右對齊,寬度為 8
{:^8d}      : 整數置中對齊,寬度為 8
{:<8d}      : 整數靠右對齊,寬度為 8
{:8.3f}     : 小數點後保留 3 位,總寬度為 8 (含小數點)
{:+8.3f}    : 小數點後保留 3 位,帶正負號,總寬度為 8 (含小數點及正負號)

 ‘:’ 前方的數值如基本操作,代表後方參數的位置

  1. print "|{0:8d}||{1:<8d}|".format(123, 456)
  2. # |     123||456     |
  3. print("|{0:+8.2f}|".format(4.32))
  4. # |   +4.32|
  5. print("|{0:8.2>}}|".format(0.8))
  6. # |  80.00%|
複製代碼

 字串與數值輸出預設對齊方式的比較

  1. print("|{0:8}|".format(123))
  2. # |     123|
  3. print("|{0:8}|".format("abc"))
  4. # |abc     |
複製代碼

  
時間表示
 datetime 有實作 format 函數,因此也支援 format 輸出,要再加上 % 格式符,列舉如下

%a  : 星期縮寫 *     (Mon)
%A  : 星期全寫 *     (Monday)
%w  : 星期數字       (0 … 6)
%d  : 日期         (01 … 31)
%b  : 月份縮寫 *     (Jan)
%B  : 月份全寫 *     (January)
%m  : 月份數字       (01 … 12)
%y  : 西元年二位數字    (00 … 99)
%Y  : 西元年        (1970 … 2018)
%H  : 24小時制       (00 … 23)
%I  : 12小時制       (01 … 12)
%p  : AM 或 PM *
%M  : 分          (00 … 59)
%S  : 秒          (00 … 59)
%f  : 微秒,六位數字    (000000 … 999999)
%c  : 日期和時間 *    (Tue Aug 16 21:30:00 2017)
%x  : 日期 *       (08/16/2017)
%X  : 時間 *       (21:30:00)

 其中有表示 * 根據地區會有不同的輸出,詳細可參考這裡,範例如下

  1. from datetime import datetime
  2. import locale

  3. time = datetime(2018, 1, 23, 14, 12, 34, 123456)
  4. print ("{:%Y-%m-%d %H:%M:%S %A}".format(time))
  5. # 2018-01-23 14:12:34 Tuesday

  6. # 注意: locale 和環境相關,如果環境沒有該地區設定,會出現類似以下的錯誤
  7. # locale.Error: unsupported locale setting
  8. locale.setlocale(locale.LC_ALL, "zh_TW.utf8")
  9. print ("{:%Y-%m-%d %H:%M:%S %A}".format(time))
  10. # 2018-01-23 14:12:34 週二
複製代碼
文章出處

 

臉書網友討論
*滑块验证:
您需要登錄後才可以回帖 登錄 | 註冊 |

本版積分規則



Archiver|手機版|小黑屋|免責聲明|TShopping

GMT+8, 2024-4-26 07:41 , Processed in 0.058616 second(s), 22 queries .

本論壇言論純屬發表者個人意見,與 TShopping綜合論壇 立場無關 如有意見侵犯了您的權益 請寫信聯絡我們。

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表