python字串格式化輸出

2021-09-07 20:46:11 字數 3701 閱讀 8844

python中有兩種格式化輸出字串的方式:格式化表示式、format()方法。當然,還有乙個簡化操作的內建format()函式。

它們絕大部分功能都是重複的,熟悉printf的可以考慮使用格式化表示式,否則使用format()更友好些,因為它像處理函式引數一樣,但format()有時候可能寫的要更複雜。

格式化表示式類似於printf的風格,在字串中使用%作為佔位符。本文只是介紹python中的一些特性,如有需要請自行搜尋printf用法。

>>> who1 = "long"

>>> who2 = "shuai"

>>> "hello %s world" % "your"

'hello your world'

>>> "hello %s world" % who1

'hello long world'

>>> "hello %s world" % (who1)

'hello long world'

>>> "hello %s %s world" % (who1, who2)

'hello long shuai world'

字串和替換目標之間也使用%分隔,且替換部分可以有多個(使用括號包圍),可以使用變數。

替換目標還可以使用字典,這時在字串中的%佔位符可以以key的方式來引用:

>>> "%(name1)s with %(name2)s" % 

'longshuai with xiaofang'

用字典的形式,可以讓表示式格式化更模板化。例如:

>>> reply = """

... hello %(name)s!

... your age is %(age)d"""

>>>

>>> values =

>>> print(reply % values)

hello longshuai!

your age is 23

使用format()來格式化字串時,使用在字串中使用{}作為佔位符,佔位符的內容將引用format()中的引數進行替換。可以是位置引數、命名引數或者兼而有之。

看示例就明白了。

# 位置引數

>>> template = ', and '

>>> template.format('long','shuai','gao')

'long, shuai and gao'

# 命名引數

>>> template = ', and '

>>> template.format(name1='long', name2='shuai', name3='gao')

'long, shuai and gao'

# 混合位置引數、命名引數

>>> template = ', and '

>>> template.format("shuai", name1='long', name3='gao')

'long, shuai and gao'

需要注意,format()函式中,位置引數必須放在所有的命名引數之前。例如,下面的會報錯:

template.format(name1='long', "shuai", name3='gao')
因為字串中的佔位符是直接引用format中的引數屬性的,在佔位符處可以進行索引取值、方法呼叫等操作。例如:

>>> import sys

>>> 'my os is '.format(sys,)

'my laptop os is win32'

>>> 'my os is '.format(sys=sys,config=)

'my loptop os is win32'

但是,在佔位符使用索引或切片時,不能使用負數,但可以將負數索引或負數切片放在format的引數中。

>>> s = "hello"

>>> 'first=, last='.format(s)

'first=h, last=o'

# 下面是錯的

>>> 'first=, last='.format(s)

# 下面是正確的

>>> 'first=, last='.format(s, s[-1])

'first=h, last=o'

format()作為函式,它也能進行引數解包,然後提供給佔位符。

>>> s=['a','b','c']

>>> ', and '.format(*s)

'a, b and c'

在佔位符後面加上數值可以表示占用字元寬度。

>>> ' = '.format('abc','def')

'abc = def '

>>> ' = '.format('abc',123)

'abc = 123'

>>> ' = '.format('abc',123.456)

'abc = 123.456'

使用>表示右對齊,<表示左對齊,^表示居中對齊,並且可以使用0來填充空格。

>>> ' = '.format('abc','def')

' abc = def'

>>> ' = '.format('abc','def')

' abc = def '

>>> ' = '.format('abc','def')

' abc = def '

>>> ' , '.format('abc','def')

'abc , def000'

>>> ' , '.format('abc','def')

'abc , 000def'

>>> ' , '.format('abc','def')

'abc , 0def00'

可以指定e、f、g型別的浮點數,預設採用g浮點數格式化。例如:

>>> ', , '.format(3.14159, 3.14159, 3.14159)

'3.141590, 3.14, 003.14'

:.2f表示保留兩位小數,:06.2f表示最大長度位6字元,左邊使用0填充而不是字串,保留2位小數。

甚至,可以從format()中指定小數字數。

>>> 'f}'.format(1/3, 4)

'0.3333'

除了字串方法format(),還提供了乙個快速格式化單個字串目標的內建函式format()。

用法示例:

>>> ''.format(1.2345)

'1.23'

>>> format(1.2345, '.2f')

'1.23'

>>> '%.2f' % 1.2345

'1.23'

python 字串格式化輸出

age 18 年齡 name hello 姓名 print name 今年 str age 歲 或者print name 今年 age,歲 這種轉換很麻煩,如果輸出中有多處需要轉換的地方 格式化輸出 d整數 f 浮點數 s字串 第一種 print s今年 d歲 name,age 按順序取值 s可以放...

python字串格式化輸出

python中有兩種格式化輸出字串的方式 格式化表示式 format 方法。當然,還有乙個簡化操作的內建format 函式。它們絕大部分功能都是重複的,熟悉printf的可以考慮使用格式化表示式,否則使用format 更友好些,因為它像處理函式引數一樣,但format 有時候可能寫的要更複雜。格式化...

字串格式化輸出

你好 info s name s age s salary s name,name,age,job s 也可以換成 d s代表 string d 代表只能接受數字 他的作用是幫助你檢測輸入的資料型別 還有乙個 f 代表的是浮點小數 注意 s點位符要和括號裡的位數相等 msg 這個地方是不顯示的 na...