Python從C語言中借鑒了一些語法特性,其中包括C語言中的printf式的格式化字符串。這種格式化字符串的方式很容易理解,下面是一個簡單的示例:
- >>> word = 'world'
- >>> 'Hello,%s!' % word # 第二個百分號前后的空格不是必須的
- 'Hello,world!'
其中,%s是格式說明符。它一方面告訴Python解釋器該在哪里取代word的值(即占位);另一方面告訴Python解釋器該字符串要格式化成什么樣的形式。
注意:%s,s代表string;%不是取模運算符,而是格式化字符串運算符。在前文中出現(xiàn)過類似情況,例如,數(shù)字間的“+”運算符用于數(shù)字加法運算,而在序列中“+”運算符用于序列拼接。這種同一種運算符的行為隨著數(shù)據(jù)類型的不同而發(fā)生行為的改變,稱為運算符重載(operator overloading)。
當多個字符串需要被格式化時,就需要將它們放到元組中:
- >>> word1 = 'Hello'
- >>> word2 = 'world'
- >>> '%s, %s!' % (word1, word2)
- 'Hello, world!'
除了%s外,格式說明符號還有很多種。常用的格式說明符及其含義如表所示。
使用%s格式化說明符應該提供一個字符串:
- >>> name = '小明'
- >>> notice = '%s,很遺憾您這次沒有及格!'
- >>> notice % name
- '小明,很遺憾您這次沒有及格!'
使用%d格式說明符應該提供一個數(shù)字:
- >>> name = '小明'
- >>> score = 59
- >>> notice1 = '%s,很遺憾,您的分數(shù)是%d,沒有及格!'
- >>> notice1 % (name, score)
- '小明,很遺憾,您的分數(shù)是59,沒有及格!
使用%d格式說明符時,如果提供的是浮點數(shù),那么將舍棄小數(shù)部分,而轉(zhuǎn)換成整數(shù):
- >>> name = '小明'
- >>> score = 59.9
- >>> notice1 = '%s,很遺憾,您的分數(shù)是%d,沒有及格!'
- >>> notice1 % (name, score)
- '小明,很遺憾,您的分數(shù)是59,沒有及格!'
使用%f格式說明符時,默認為6位小數(shù):
- >>> name = '小明'
- >>> score = 59.9
- >>> notice2 = '%s,很遺憾,您的分數(shù)是%f,沒有及格!'
- >>> notice2 % (name, score)
- '小明,很遺憾,您的分數(shù)是59.900000,沒有及格!'
使用%f格式說明符時,可以指定小數(shù)位數(shù):
- >>> name = '小明'
- >>> score = 59.9
- >>> notice3 = '%s,很遺憾,您的分數(shù)是%.2f,沒有及格!'
- >>> notice3 % (name, score)
- '小明,很遺憾,您的分數(shù)是59.90,沒有及格!'
使用%x格式說明符時,將十進制數(shù)轉(zhuǎn)換成十六進制數(shù):
- >>> name = '小明'
- >>> score = 59
- >>> notice4 = '%s,很遺憾,您的分數(shù)用十六進制表示為%x,沒有及格!'
- >>> notice4 % (name, score)
- '小明,很遺憾,您的分數(shù)用十六進制表示為3b,沒有及格!'
對于這種“老式”的printf式的格式化字符串就討論到這里,它已經(jīng)逐漸“過時”。
>>本文地址:http://liujunjsxg.cn/zhuanye/2020/52597.html
聲明:本站稿件版權均屬中公教育優(yōu)就業(yè)所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
1 您的年齡
2 您的學歷
3 您更想做哪個方向的工作?