天天看點

python字元串格式化_Python3.6中的字元串格式化

《Python3萌新入門筆記》中,我們看到了使用“%”和“format()”進行字元串格式化的操作。

在Python3.6中,又出現的一種新的格式化字元串的方法:f-string。

f-string是指以“F”或“f”為字首的字元串。

使用方法很簡單,我們來看示例:

width = 20

height = 10

print(f'矩形的寬為{width}厘米,高為{height}厘米,面積為{width*height}平方厘米。')

# 顯示輸出結果為:矩形的寬為20厘米,高為10厘米,面積為200平方厘米。

相信大家已經看懂了。

在f-string中,包含可以替換的字段,也就是通過“{}”嵌入的表達式,并且在運作時計算表達式的值。

除了上面的這個用法,我們再看一些示例:

name = '小樓'

print(f'{name!r}是一個美男子!')

# 顯示輸出結果為:'小樓'是一個美男子!

上面的示例代碼運作後,顯示的結果中,名字兩側帶有單引号。

很明顯是f-sting中的“!r”在起作用。

“!r”表示對前面的“name”調用“repr()”方法。

上面的代碼等價于下方代碼:

name = '小樓'

print(f'{repr(name)}是一個美男子!')

與此相關的還有“!s”和“!a”分别調用“str()”方法和“ascii()”方法。

另外,在f-string中還可以通過“:”引用說明符。

示例代碼:

w = '10' # 寬度

p = 5 # 精度

value = 12.34567

print(f'result: {value:{w}.{p}}')

# 顯示輸出結果為:result: 12.346

從上方代碼中,大家能夠看出,說明符既可以是數字,也可以是數字的字元串。

提示:寬度為10是指最終結果中“value”的字元總數量(注意前面包含了5個空格),精度為5是指最終結果中“value”所包含的數值字元總數量(不含小數點)。

除了對數值的轉換說明符操作,還可以對日期進行轉換操作。

示例代碼:

from datetime import datetime

import locale

today = datetime.now()

locale.setlocale(locale.LC_CTYPE, 'chinese') # 解決中文異常

print(f'今天是{today:%Y年%m月%d日}。')

# 顯示輸出結果類似:今天是2018年07月11日。

還有,可以進行數字進制的轉換。

示例代碼:

number = 1024

print(f'數字[{number}]的十六進制是[{number:#0x}]。')

# 顯示輸出結果為:數字[1024]的十六進制是[0x400]。

以上是關于字元串格式化的各類操作介紹。

最後,大家要注意以下幾點。

1、表達式中不能使用反斜杠“\”,如果需要使用的話,通過建立臨時變量解決。

示例代碼:(錯誤)

print(f'Unicode: {ord("\n")}')

示例代碼:(正确)

newline = ord('\n')

print(f'Unicode: {newline}')

# 顯示輸出結果為:Unicode: 10

2、注意單引号和雙引号的混用規則。

示例代碼:

d = {'name': '小樓'}

print(f'{d['name']}是一個大帥哥!') # 錯誤

print(f'{d["name"]}是一個大帥哥!') # 正确

3、要注意格式化字元串文字不能用作文檔字元串,即使它們不包含表達式。