3.1.3 格式化字符串的语法

字符串

格式化字符串的语法如下:

replacement_field::="{"[field_name]["!"conversion][":"format_spec]"}"

field_name::=arg_name("."attribute_name|"["element_index"]")*

arg_name::=[identifier|integer]

attribute_name::=identifier

element_index::=integer|index_string

index_string::=<anysourcecharacterexcept"]">+

conversion::="r"|"s"|"a"

format_spec::=<describedinthenextsection>

3.1.3.1’%03.2f’就表示为’{:03.2f}’。不过,新的格式化方式也有些新选项和不同的使用方式,如下面的例子:

通过位置来访问参数:

#string

importstring

print(‘{0},{1},{2}’.format(‘a’,’b’,’c’))

print(‘{},{},{}’.format(‘a’,’b’,’c’))

print(‘{2},{1},{0}’.format(‘a’,’b’,’c’))

print(‘{2},{1},{0}’.format(*’abc’))

print(‘{2},{1},{2}’.format(‘abc’,’123′,’888′))

结果输出如下:

a,b,c

a,b,c

c,b,a

c,b,a

888,123,888

在这个例子里,,语句

在语句

通过名称来访问参数:

print(‘mouse:({x},{y})’.format(x=’100′,y=’200′))

mousept={‘x’:’200′,’y’:’888′}

print(‘mouse:({x},{y})’.format(**mousept))

结果输出如下:

mouse:(100,200)

mouse:(200,888)

在语句

访问参数的属性:

print(‘

classPoint:

def__init__(self,x,y):

self.x,self.y=x,y

def__str__(self):

return’Point({self.x},{self.y})’.format(self=self)

print(str(Point(5,5)))

输出结果如下:

复数的属性访问,实部

Point(5,5)

在语句

访问参数的项:

xy=(20,30)

print(‘X

输出结果如下:

X

通过这个例子里可以看到在格式化中直接访问元组的项,比如

使用

print(‘repr():{!r};str():{!s}’.format(‘abc’,’123′))

输出结果如下:

repr():’abc’;str():123

通过这个例子,就可以看到使用

字符串排列和宽度对齐

print(‘{:<30}’.format(‘

print(‘{:^30}’.format(‘

输出结果如下:

左对齐

右对齐

居中对齐

*************

print(‘{:+f};{:+f}’.format(0.618,-0.618))

print(‘{:f};{:f}’.format(0.618,-0.618))

print(‘{:f};{:f}’.format(0.618,-0.618))

print(‘{:-f};{:-f}’.format(0.618,-0.618))

输出结果如下:

+0.618000;-0.618000

0.618000;-0.618000

0.618000;-0.618000

0.618000;-0.618000

替换

print(‘int:{0:d};hex:{0:x};oct:{0:o};bin:{0:b}’.format(55))

print(‘int:{0:d};hex:{1:x};oct:{0:o};bin:{0:b}’.format(55,64))

print(‘int:{0:#d};hex:{0:#x};oct:{0:#o};bin:{0:#b}’.format(55))

输出结果如下:

int:55;hex:37;oct:67;bin:110111

int:55;hex:40;oct:67;bin:110111

int:55;hex:0x37;oct:0o67;bin:0b110111

用逗号作为千位的分隔符

print(‘{:,}’.format(9876543210))

print(‘{0:,}’.format(88888888888889876543210))

输出结果如下:

9,876,543,210

88,888,888,888,889,876,543,210

格式化时输出百分比值

print(‘

输出结果如下:

百分比输出:

print(‘{0:{fill}{align}16}’.format(text,fill=align,align=align))

width=5

fornuminrange(5,12):

forbasein’dXob’:

print(‘{0:{width}{base}}’.format(num,base=base,width=width),end=”)

print()

输出结果如下:

左<<<<<<<<<<<<<<<

^^^^^^^中^^^^^^^^

>>>>>>>>>>>>>>>右

555101

666110

777111

88101000

99111001

10A121010

11B131011

多个格式化模板并列

IPAddr=[192,168,0,8]

print(‘{:02X}{:02X}{:02X}{:02X}’.format(*IPAddr))

输出结果如下:

C0A80008

蔡军生 QQ:9073204 深圳

版权声明:本文为博主原创文章,未经博主允许不得转载。

每个人在他的人生发轫之初,总有一段时光,

3.1.3 格式化字符串的语法

相关文章:

你感兴趣的文章:

标签云: