python字符串格式化

时间:2023-01-07 09:58:51

一 字符串格式化表达式(%操作符)

python在对字符串操作时,定义%操作符。%操作符为编写多字符串替换提供了一种简洁的方法,来控制字符串呈现格式。

格式化字符串(《python学习手册》):

1、在%操作符的左侧放置一个需要进行格式化的字符串,这个字符串带有一个或多个嵌入的转换目标,都以%开头(例如,%d)

2、在%操作符右侧放置一个(或多个,嵌入到元祖中)对象,这些对象将会插入到左侧想让python进行格式化字符串的一个(或多个)转换目标的位置上去。

例如:

print('That is %d %s bird!' %(1, 'dead'))  

#输出:
#That is 1 dead bird!

整数1替换在格式化字符串左边的%d,字符串”dead”替换%s 。

print('%s -- %s -- %s' %(42, 3.14159, [1,2,3]))  

#输出:
#42 -- 3.14159 -- [1, 2, 3]

这个例子中,插入三个值,整数、浮点数和列表对象。但是所有目标左侧都是%s,这表示要把他们转换为字符串。由于每个对象的类型都可以转换为字符串(打印时所使用的)。所以,除非要做特殊的格式化,一般都可以用%s来格式化表达式。

注意,格式化总是会返回新的字符串作为结果而不是对左侧的字符串进行修改。

字符串格式化代码:

代码 意义
%s 字符串 (或任何对象)
%r 字符串 ,但使用repr,而不是str
%c 字符
%d 十进制整数
%i 整数
%u 无号(整数)
%o 八进制整数
%x 十六进制整数
%e 浮点指数
%f 浮点数十进制
%% 字符”%”


在格式化字符串时,表达式左侧的转换目标支持多种转换操作。可以对格式进一步控制:

%[(name)][flags][width].[precision]typecode

(name)为命名 。flags:左对齐(-)、右对齐(+)和补零(0)。width表示显示宽度 。precision表示小数点后精度 。

例如:

x = 1.23456789
print('%-6.2f|%06.2f|%+6.1f' %(x,x,x))

#输出:
#1.23 |001.23| +1.2


二 字符串格式化调用方法:

format 方法使用主体字符串作为模板。在主题字符串中,花括号通过位置(例如, {1})或关键字(例如,{food})指出替换目标及将要插入的参数。

通过位置:

# By position
template = '{0},{1} and {2}'
print(template.format('first','second','third'))

#输出:
#first,second and third

通过关键字:

# By Keyword
template = '{food},{fruit} and {vegetable}'
print(template.format(food='chicken',fruit='banana',vegetable='brocoli'))

#输出:
#chicken,banana and brocoli