Python 學習筆記(6)— 字元串格式化

来源:https://www.cnblogs.com/Light-/archive/2019/08/13/11337257.html
-Advertisement-
Play Games

字元串格式化處理 遠古寫法 以前通常使用運算符號 , 插入的值 類型, 指插入的值為包含 3 位小數的浮點數: 關鍵字插入法: Python 3 推薦方法 新版本 Python 中,應選擇使用字元串方法 ,每個替換欄位都用 大括弧(花括弧)括起,括弧內可留空或添加格式設置信息: 一般用法: 索引也可 ...


字元串格式化處理

遠古寫法

以前通常使用運算符號 %%s 插入的值 String 類型,%.3f 指插入的值為包含 3 位小數的浮點數:

format1 = "%s, %s!" % ('Hello', 'World')
# 'Hello, World!'

關鍵字插入法:

temp = string.Template('I am $name, I like $what!;)
temp.substitute(name='Liang', what='Apple')
# 'I am Liang, I like Apple!' 

Python 3 推薦方法

新版本 Python 中,應選擇使用字元串方法 format,每個替換欄位都用 {} 大括弧(花括弧)括起,括弧內可留空或添加格式設置信息:

  • 一般用法:
'I am {},I like {}'.format('Liang', 'Apple')
# 'I am Liang, I like Apple!' 

'I am {0},I like {1}'.format('Liang', 'Apple')
# 'I am Liang, I like Apple!' 
  • 索引也可無需像上面一樣順序排列,但註意不能同時使用自動索引和手工索引
'I am {1},I like {0}'.format('Apple', 'Liang')
# 'I am Liang, I like Apple!' 
  • 更可以像上面關鍵字插入法一樣,給每個替換欄位命名,名稱後面跟冒號可以設置格式:
'{name} is {value:.2f},'.format(name='π', value=pi)
# 'π is 3.14' 
  • 終極簡約寫法,在字元串前面加上 f,便可直接將值或變數寫在大括弧內:
f"{'π'} is {pi:.2f}"
# 'π is 3.14' 
  • 如果輸出結果中需要包含大括弧,則可使用兩個大括弧來指定:
"{{我需要使用{what}啊!}}".format(what='大括弧')
# {我需要使用大括弧啊!}
  • 關鍵字插入法可以和索引同時使用:
'{foo} {1} {bar} {0}'.format(1, 2, foo=3, bar=4)
# '3 1 2 4'

基本轉換

指定占位符要轉換的類型;

例如,你可以提供一個整數,但將其作為小數進行處理:

num = 1024
f'The number is {num:f}'
# 'The number is 1024.000000'

亦或者將其作為二進位處理:

num = 1024
f'The number is {num:b}'
# 'The number is 10000000000'

以下為字元串格式設置類型說明符:

說明符 含義
b 將整數表示為二進位
c 將整數解讀為Unicode碼點
d 將整數視為十進位數進行處理,這是整數預設使用的說明符
e 使用科學表示法來表示小數(用 e 來表示指數)
E 與 e 相同,但使用 E 來表示指數
f 將小數表示為定點數
F 與 f 相同,但與特殊值(nan 和 inf),使用大寫表示
g 自動在定點表示法和科學表示法之間做選擇。這是預設用於小數的說明符,但在預設情況下至少有 1 位小數
G 與 g 相同,但使用大寫來表示指數和特殊值
n 與 g 相同,但插入隨區域而異的數字分隔符
o 將整數表示為八進位數
s 保持字元串的格式不變,這是預設用於字元串的說明符
x 將整數表示為十六進位數並使用小寫字母
X 與 X 相同,但使用大寫字母
% 將數表示為百分比值(乘以100,按說明符 f 的設置格式,再在後面加上 %)

寬度、精度和千位分隔符

在字元串格式化處理是,不但可以轉換類型,還可以設置轉換欄位的寬度和精度;

寬度使用整數表示:

num = 1024
f'{num:10}'
# '      1024'

數字和字元串的預設對齊方式不同:

num = '1024'
f'{num:10}'
# '1024      '

精度也是使用整數表示,但需要在整數前加上小數點:

num = 1024
f'{num:.2f}'
# '1024.00'

寬度可以和精度同時指定:

num = 1024
f'{num:10.2f}'
# '   1024.00'

字元串類型也可以指定精度,但不推薦使用,使用切片處理則更好理解:

str = '今天天氣不錯~'
f'{str:.2}'
# '今天'

在冒號後面添加一個逗號可以為數值添加千位分隔符:

num = 10000000000000
f'{num:,}'
# '10,000,000,000,000'

填充、對齊與符號

在不添加對齊符號(使用預設對齊方式)的情況下,盡可以使用 0 進行有意義的填充操作:

num = 1024
f'{num:010}'
# '0000001024'

但是在添加了對齊符號之後,就可以在對齊符號前面任意添加一個字元表示填充字元了;

對齊符號:<(左對齊)、>(右對齊)、^(居中),寫在寬度之前:

num = 1024
f'{num:<10}'
'1024      '
f'{num:^10}'
'   1024   '
f'{num:>10}'
'      1024'

當替換欄位為數值時,可為替換欄位添加正負符號,

添加 + 符號時,加號寫在對齊符號之後,寬度整數之前;

添加 - 符號時,減號寫在替換欄位的之前;

可以理解為將替換欄位的數值乘以 +1(將 + 顯示)或 -1

num = 1024
f'{num:>+10}'
'     +1024'
f'{-num:>10}'
'     -1024'

如果需要為負數添加符號:

num = -1024
f'{num:>10}'
'     -1024'
f'{-num:>+10}'
'     +1024'

= 是一種添加了正負符號之後的另一種對齊符號(可以理解為 兩端對齊),作用是將填充字元放在符號和數字之間:

num = 1024
f'{num:=+10}'
'+     1024'
f'{-num:=10}'
'-     1024'

總結

'{[0]sum[1][2][3][4][5]}'

0:為替換欄位添加 - 符號(替換欄位須為數字且不為負數,因為負數無需再多此一舉);

1:為替換欄位指定寬度之後可以在此位置指定填充字元,預設為空格;

2:為替換欄位指定寬度之後可以在此位置指定對齊符號,<(左對齊) / ^(居中) / >(右對齊) / =(兩端對齊,只能用於類型為數值切有正負符號的替換欄位);

3:為替換欄位添加 + 符號(替換欄位須為數字);

4:指定替換欄位的寬度,只能填寫整數;

5:指定替換欄位的精度或轉換類型;


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • ArrayList 實現了List的介面,是長度可變的數組,空間是連續的 api預設提供了很多操作ArrayLis的方法,這些方法可以去api裡面查詢使用 一、這麼多方法怎麼學?1.熟練使用常見的方法2.瞭解大概還有哪些方法3.需要用的時候,就查api文檔 二、常見的集合有ArrayList Lin ...
  • 第九節 1,函數初始 函數:將某個功能封裝,到一個空間中就是函數 減少重覆代碼 函數是一種編碼思維 函數:將某個功能封裝,到一個空間中就是函數 減少重覆代碼 函數是一種編碼思維 定義函數 def python中關鍵字 len 函數名 ——變數名一模一樣 () 必須要寫的 格式規定 : 語句結束 de ...
  • 11.3 css 11.31 基本選擇器 根據指定的id名稱,在當前界面中找到對應的唯一一個的標簽,然後設置屬性 作用:根據指定的類名稱,在當前界面中找到對應的標簽,然後設置屬性 作用:根據指定的標簽名稱,在當前界面中找到所有該名稱的標簽,然後設置屬性 註意: 1、只要是HTML的標簽都能當做標簽選 ...
  • 三元表達式,列表推導式,字典生成式,生成器,匿名函數(今天事情較多,cv了一下偷懶了...) ...
  • Flink 序列化機制 <! more https://t.zsxq.com/JaQfeMf 博客 1、 "Flink 從0到1學習 —— Apache Flink 介紹" 2、 "Flink 從0到1學習 —— Mac 上搭建 Flink 1.6.0 環境並構建運行簡單程式入門" 3、 "Flin ...
  • Flink Metrics 有如下模塊: <! more "Flink Metrics 源碼解析 —— Flink metrics core" "Flink Metrics 源碼解析 —— Flink metrics datadog" "Flink Metrics 源碼解析 —— Flink met ...
  • JobManager 處理 SubmitJob <! more https://t.zsxq.com/3JQJMzZ 博客 1、 "Flink 從0到1學習 —— Apache Flink 介紹" 2、 "Flink 從0到1學習 —— Mac 上搭建 Flink 1.6.0 環境並構建運行簡單程式 ...
  • JobManager 的作用 <! more https://t.zsxq.com/2VRrbuf 博客 1、 "Flink 從0到1學習 —— Apache Flink 介紹" 2、 "Flink 從0到1學習 —— Mac 上搭建 Flink 1.6.0 環境並構建運行簡單程式入門" 3、 "F ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...