Python 中字符串格式化的不同方式:前 3 種方法

已發表: 2021-02-23

字符串格式化是編程語言中用於格式化或在字符串中插入用戶指定的值和位置的基本功能。 C 語言有一種方法可以做到這一點,如果您對 C 語言有一定的經驗,您可能會熟悉這種方法。 然而,Python 支持的不是 1 種,不是 2 種,而是 3 種不同的字符串格式化方式。 每種方式都有其優點和缺點,我們將在本教程中看到。 我們還將看看這 3 種方法中哪一種是最常用和最有效的方法。

學習世界頂尖大學的在線數據科學課程獲得行政 PG 課程、高級證書課程或碩士課程,以加快您的職業生涯。

在本教程結束時,您將了解以下內容:

  • 字符串格式化的不同方式
  • 它們的用法與示例
  • 哪種方式最受青睞

目錄

字符串格式化的不同方式

Python 已獲得多項更新以改進字符串格式。 讓我們一一介紹它們。

方法一:C風格字符串格式化

Python 通過對每種數據類型使用特殊字符來包含舊的字符串格式化方式。 這種很好的舊字符串格式化方法是從 C 語言中採用的,並且仍然非常有效。 字符串格式說明符“%”後跟每種數據類型的專用字符用於格式化字符串。

讓我們通過一個小例子來理解這一點:

數 = 8
名稱=“粉紅人”
print(“名字是 %s,數字是 %d” %( name, num))

#輸出
>> “名字是pinkman,數字是8”

如您所見,格式說明符 %s 用於格式化字符串名稱,而 %d 用於格式化整數 num。 同樣,浮點數也有一個格式說明符。 讓我們也檢查一下。

數量 = 4.32
利斯 = [ 1 , 3 , 5 ]
print( "list 是 %s,float 是 %f" %(lis, num))

#輸出
>> 列表[ 1 , 3 , 5 ]並且浮點數4.320000

在上面的示例中,我使用 %f 格式說明符來格式化浮點值。 這裡需要注意兩點。 一,浮點值打印為 4.320000 而不僅僅是 4.32。 為什麼這樣? 這是因為 Python 默認使用 6 位小數精度的浮點數。 其次,我使用字符串格式說明符打印了一個列表。 這並不意味著 %s 格式說明符可以接受任何數據類型。 它只是將其轉換為字符串並打印出來。 所以打印出來的列表本質上是一個字符串,而不是一個列表。

好的,那麼如何指定需要多少小數點精度呢?

print("list is %s and float with 2 point accuracy is %.2f" %(lis, num))

#輸出
>> 列表[ 1 , 3 , 5 ]並且浮點數4.32

這裡要注意的另一點是,我們需要按照它們在字符串中的使用順序給出變量。 如果更改順序,則將輸出設置為相應地受到影響。 不需要我們每次都以正確的順序給出變量的另一種方法是以稍微不同的方式使用字符串格式。

print(“list 是 %(a)s,float 是 %(b)f” %{“b”: num, “a”: lis})

#輸出
>> 列表[ 1 , 3 , 5 ]並且浮點數4.320000

如你所見,這寫起來非常麻煩。

總結一下,3 個最常用的格式說明符是:

  1. %s 用於字符串
  2. %d 表示整數
  3. %.<十進制精度>f 用於浮點數

方法 2:新樣式字符串格式

Python 3 通過對字符串使用 format() 方法引入了一種更好的字符串格式化方法。 通過放置大括號來使用佔位符,格式方法包含需要放在字符串中這些位置的變量。 讓我們看一個小例子來理解這一點。

名稱=“斯凱勒”
print(“嗨,我叫{}”.format(name))

#輸出
>> 你好,我斯凱勒

這比我們上面看到的舊式格式要好得多。 花括號充當包含字符串的變量名稱的佔位符。 請注意,使用 format 方法,我們不需要像在舊式格式中那樣指定變量的數據類型。

一個帶有數字的例子:

數 = 3
整數 = 4.34
名稱= “傑西”

print( “嗨,我的名字是 {},數字是 {},浮點數是 {}” .format(name, num, int))

#輸出
>> 你好,我叫jessy ,數字3 浮點數4.34

整潔的! 如您所見,它需要按照它們在字符串中的使用順序將變量傳遞給格式方法。 另一種使用格式方法的方法是不需要我們以正確的順序傳遞所有變量:

print(“嗨,我的名字是 {name},數字是 {num},浮點數是 {int}”.format(int=int, num=num , name=name))

#輸出
>> 你好,我叫jessy ,數字3 浮點數4.34

在上面的示例中,我們看到當變量在佔位符中明確提及時,不再需要以正確的順序將它們傳遞給格式化方法。

我們還可以在佔位符中傳遞變量的位置,以更好地跟踪它們。

print(“嗨,我的名字是 {0},數字是 {1},浮點數是 {2}”.format(name, num, int))

#輸出
>> 你好,我叫jessy ,數字3 浮點數4.34

方法 3:使用 F 字符串

在 Python 3.6 中引入的 f-strings 是進行字符串格式化的最簡單和最有效的方法。 這些也稱為格式化字符串文字。 他們在字符串的開頭使用文字 f 來告訴 python 將其視為格式化字符串。 佔位符包含需要放在該位置的實際變量。

讓我們看一個例子。

名稱=“海森堡”
bill = 100.43print(f”名字是{name},賬單是{bill}”)

#輸出
>> 名字海森堡賬單100.43

這很容易。 此外,我們還可以直接放入表達式而不是變量。

a = 5
b = 8

print( f"總和是{a+b} " )

#輸出
>> 總和13

我們也可以直接調用函數並在字符串文字中獲取它們的輸出。

print( f"名字是{name.upper()} " )

#輸出
>> 這個名字海森堡

此外,我們也可以使用 f 字符串直接從函數返回值。

def combiner(姓名,年齡,金錢):
return f”{name} 的年齡是 {age} 並且有薪水 {money}”

Saul Goodman 45薪水2000000

如我們所見,當我們將函數直接傳遞給佔位符時,它會調用函數並將輸出直接放在花括號中。 顯然,這種字符串格式化方法是最有效且易於編寫的方法。

結帳: Python 面試問答

在你走之前

字符串格式化是一項常規任務,Python 引入 format 方法和 f 字符串的方式使使用 Python 的人非常容易。 f-strings 是處理字符串格式的最常用和首選的方式,因為它非常易於編寫和維護。 此外,它還使代碼更加 Pythonic! 在後台, f 字符串使用 __format__ 協議。 f 字面量只是 Python 為其用戶提供的語法糖,使我們更容易編寫字符串格式。

如果您想了解數據科學,請查看 IIIT-B 和 upGrad 的數據科學執行 PG 計劃,該計劃是為在職專業人士創建的,提供 10 多個案例研究和項目、實用的實踐研討會、行業專家的指導、1與行業導師一對一,400 多個小時的學習和頂級公司的工作協助。

Python 3 中的哪些格式化方法允許多次替換和值格式化?

1. Python 的內置字符串 format() 方法將提供的字符串轉換為更有用的輸出。 Python3 中的 format() 函數是允許多次替換和值格式化的字符串格式化方法之一。 format() 方法使用位置格式來連接字符串中的項目。
2. 可以使用多對花括號來格式化字符串。 如果在長字符串中需要另一個變量替換,則可以添加第二組花括號並將第二個值傳遞到過程中。
3. Python 中的 format() 函數接受任意數量的參數。 但是,它主要分為以下兩種參數。
一種。 位置參數是一個參數列表,可以通過將參數的索引放在大括號(索引)中來檢索這些參數。
灣。 關鍵字參數 – 這是一個 key=value 參數列表,可以使用花括號內的參數鍵訪問這些參數。
4. format() 方法返回一個已經格式化的字符串。 format() 函數讀取提供給它的參數類型,並根據字符串中的格式代碼對它們進行格式化。

在 Python 3 中如何在沒有換行符的情況下打印?

在 Python 3 中為您的 print 方法添加一個額外的參數,以告訴計算機您不希望下一個字符串位於新行上。 考慮以下場景。
print('歡迎!', end = ')
在這種情況下,任何進一步的打印功能都將出現在同一行。

我們可以在 Python 中將字符串轉換為浮點數嗎?

1. 如果我們通過終端的用戶輸入以及從文件中讀取它來獲取浮點值,它們就是字符串對象。 因此,我們必須顯式地將它們轉換為浮點數,以便執行必要的操作,如加法、乘法等。
2. Python中的float()方法可用於將字符串轉換為浮點數。 它是用於將浮點數轉換為對象的內置函數。 在內部,float() 函數調用所提供對象的 __float__() 函數。