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
  • 前言 在我們開發過程中基本上不可或缺的用到一些敏感機密數據,比如SQL伺服器的連接串或者是OAuth2的Secret等,這些敏感數據在代碼中是不太安全的,我們不應該在源代碼中存儲密碼和其他的敏感數據,一種推薦的方式是通過Asp.Net Core的機密管理器。 機密管理器 在 ASP.NET Core ...
  • 新改進提供的Taurus Rpc 功能,可以簡化微服務間的調用,同時可以不用再手動輸出模塊名稱,或調用路徑,包括負載均衡,這一切,由框架實現並提供了。新的Taurus Rpc 功能,將使得服務間的調用,更加輕鬆、簡約、高效。 ...
  • 順序棧的介面程式 目錄順序棧的介面程式頭文件創建順序棧入棧出棧利用棧將10進位轉16進位數驗證 頭文件 #include <stdio.h> #include <stdbool.h> #include <stdlib.h> 創建順序棧 // 指的是順序棧中的元素的數據類型,用戶可以根據需要進行修改 ...
  • 前言 整理這個官方翻譯的系列,原因是網上大部分的 tomcat 版本比較舊,此版本為 v11 最新的版本。 開源項目 從零手寫實現 tomcat minicat 別稱【嗅虎】心有猛虎,輕嗅薔薇。 系列文章 web server apache tomcat11-01-官方文檔入門介紹 web serv ...
  • C總結與剖析:關鍵字篇 -- <<C語言深度解剖>> 目錄C總結與剖析:關鍵字篇 -- <<C語言深度解剖>>程式的本質:二進位文件變數1.變數:記憶體上的某個位置開闢的空間2.變數的初始化3.為什麼要有變數4.局部變數與全局變數5.變數的大小由類型決定6.任何一個變數,記憶體賦值都是從低地址開始往高地 ...
  • 如果讓你來做一個有狀態流式應用的故障恢復,你會如何來做呢? 單機和多機會遇到什麼不同的問題? Flink Checkpoint 是做什麼用的?原理是什麼? ...
  • C++ 多級繼承 多級繼承是一種面向對象編程(OOP)特性,允許一個類從多個基類繼承屬性和方法。它使代碼更易於組織和維護,並促進代碼重用。 多級繼承的語法 在 C++ 中,使用 : 符號來指定繼承關係。多級繼承的語法如下: class DerivedClass : public BaseClass1 ...
  • 前言 什麼是SpringCloud? Spring Cloud 是一系列框架的有序集合,它利用 Spring Boot 的開發便利性簡化了分散式系統的開發,比如服務註冊、服務發現、網關、路由、鏈路追蹤等。Spring Cloud 並不是重覆造輪子,而是將市面上開發得比較好的模塊集成進去,進行封裝,從 ...
  • class_template 類模板和函數模板的定義和使用類似,我們已經進行了介紹。有時,有兩個或多個類,其功能是相同的,僅僅是數據類型不同。類模板用於實現類所需數據的類型參數化 template<class NameType, class AgeType> class Person { publi ...
  • 目錄system v IPC簡介共用記憶體需要用到的函數介面shmget函數--獲取對象IDshmat函數--獲得映射空間shmctl函數--釋放資源共用記憶體實現思路註意 system v IPC簡介 消息隊列、共用記憶體和信號量統稱為system v IPC(進程間通信機制),V是羅馬數字5,是UNI ...