来自 编程应用 2019-09-04 19:47 的文章
当前位置: 六合联盟网 > 编程应用 > 正文

python学习笔记,2官方文档教程

二个顺序的出口有好各类主意,数据不只能够用大家读懂的样式打字与印刷出来大概写入到文件以便现在应用。那章就斟酌那一个难点。

基本字符串操作

5.1 格式化输出

近来大家曾经接触了两种输出值形式: 表明式语句和print()函数。(第两种就是利用file对象中的write()方法;标准的文件输出可参照sys.stdout库文件)

时临时你会想调节输出格式化的多少实际不是简单用空格分隔的字符。这里有三种办法用来格式化你的输出数据。第一种艺术便是由你自个儿管理全数的字符串,用字符串中的切分大概链接操作你能够创制任何你想只要的字符。规范模块string富含部分将字符串填充到钦定列宽度的灵光操作,随后将商商酌那些。第两种方法便是行使str.format()方法。

String模块中包括叁个template类,它提供另一种格局来将值转化为字符串方式。当然存在三个题目:你怎么样把值转化为字符串? 幸运的是,python已经提供了别的值转化为字符串的各类方法:把值传给方法repr()或然str();

Str()函数用来回到叁个更便利人读的款式。而repr()方法用来产生二个解释器方便的款型。(若无相等的语句就会产生syntaxerror)。对于二个并未有能够提供可供人方便读的特种方式,str()再次回到值与repr()再次回到值相同。对于更加多的值例如数字或许类似于列表和字典的构造, 都用这二种办法能够产生一样的表现方式。 极其地,字符串有多个例外的显现完毕。

例如:

>>> s = ’Hello, world.’

>>> str(s)

’Hello, world.’

>>> repr(s)

"’Hello, world.’"

>>> str(1/7)

’0.14285714285714285’

>>> x = 10*3.25

>>> y = 200*200

>>> s = ’The value of x is ’ + repr(x) + ’, and y is ’ + repr(y) + ’...’

>>> print(s)

The value of x is 32.5, and y is 40000...

>>> # The repr() of a string adds string quotes and backslashes:

... hello = ’hello, worldn’

>>> hellos = repr(hello)

>>> print(hellos)

’hello, worldn’

>>> # The argument to repr() may be any Python object:

... repr((x, y, (’spam’, ’eggs’)))

"(32.5, 40000, (’spam’, ’eggs’))"

那有三种方式来输出平方和立方的表格:
>>> for x in range(1, 11):

... print(repr(x).rjust(2), repr(x*x).rjust(3), end=’ ’)

... # Note use of ’end’ on previous line

... print(repr(x*x*x).rjust(4))

...

1 1 1

2 4 8

3 9 27

4 16 64

5 25 125

6 36 216

7 49 343

8 64 512

9 81 729

10 100 1000

>>> for x in range(1, 11):

... print(’{0:2d} {1:3d} {2:4d}’.format(x, x*x, x*x*x))

...

1 1 1

2 4 8

3 9 27

4 16 64

5 25 125

6 36 216

7 49 343

8 64 512

9 81 729

10 100 1000

(注意在率先个例证中,用艺术print()在每列中加多了空格:它也能够会在参数之间增添空格)

在例子的章程描述了字符串类中的str.rjust()方法运用。它经过在字符串左侧填充内定宽度的空格以致右对齐。还会有四个像样的不二秘诀:str.ljust()和str.center()、那些措施不是用来写任何数据,它们会回来贰个新的字符串。要是输入的字符串太长,它们不会截断它,而是原样重返。那大概是您的列表局混乱,可是比截断更加好,那样会输出错误的值(假若你想截断,你总会能够行使切成条操作,如x.ljust(n)[:n])

还大概有三个办法:zfile(),使用零在数字字符串侧边填充(到钦点宽度)。它能够领略正负号。

>>> ’12’.zfill(5)

’00012’

>>> ’-3.14’.zfill(7)

’-003.14’

>>> ’3.14159265359’.zfill(5)

’3.14159265359’

Str.format()方法的宗旨用法就如上面同样:

>>> print(’We are the {} who say "{}!"’.format(’knights’, ’Ni’))

We are the knights who say "Ni!"

括号以及富含的字符(称为格式域)会被传出str.format()的指标所代替。在括号中的数据

代替他传递给格式化方法对象的职位。

>>> print(’{0} and {1}’.format(’spam’, ’eggs’))

spam and eggs

>>> print(’{1} and {0}’.format(’spam’, ’eggs’))

eggs and spam

万一首要字参数在str.format()方法中选取时,它们的值通过参数名钦点。

>>> print(’This {food} is {adjective}.’.format(

... food=’spam’, adjective=’absolutely horrible’))

This spam is absolutely horrible.

岗位和根本字参数能够大肆组合使用。

>>> print(’The story of {0}, {1}, and {other}.’.format(’Bill’, ’Manfred’,

other=’Georg’))

The story of Bill, Manfred, and Georg.

’!a’ (apply ascii()), ’!s’ (apply str()) and ’!r’ (apply repr())这几个主意能够用来在格式化前转化数值。
>>> import math

>>> print(’The value of PI is approximately {}.’.format(math.pi))

The value of PI is approximately 3.14159265359.

>>> print(’The value of PI is approximately {!r}.’.format(math.pi))

The value of PI is approximately 3.141592653589793.

字符名称前边能够跟三个可选的“:”符号和格式化分类符,那也是怎么样更加好的主宰格式化值得方法。上边包车型客车实例将PI小数点后截取为几位。

>>> import math

>>> print(’The value of PI is approximately {0:.3f}.’.format(math.pi))

The value of PI is approximately 3.142.

在“:”后传递一个大背头将会设置这些字符宽度的小小字数。那些对美化表格很有用途。

>>> table = {’Sjoerd’: 4127, ’Jack’: 4098, ’Dcab’: 7678}

>>> for name, phone in table.items():

... print(’{0:10} ==> {1:10d}’.format(name, phone))

...

Jack ==> 4098

Dcab ==> 7678

Sjoerd ==> 4127

设若您有叁个相比长的格式化字符,不过你不想把它分开, 使用名称取代地方来引用被各种化的变量将越来越好,那能够省略通过传递一个字典,而且选择方括号‘【】’访问具有的主键。

>>> table = {’Sjoerd’: 4127, ’Jack’: 4098, ’Dcab’: 8637678}

>>> print(’Jack: {0[Jack]:d}; Sjoerd: {0[Sjoerd]:d}; ’

’Dcab: {0[Dcab]:d}’.format(table))

Jack: 4098; Sjoerd: 4127; Dcab: 8637678

通过用“**”把表作为首要字参数来兑现这么些成效,举个例子

>>> table = {’Sjoerd’: 4127, ’Jack’: 4098, ’Dcab’: 8637678}

>>> print(’Jack: {Jack:d}; Sjoerd: {Sjoerd:d}; Dcab: {Dcab:d}’.format(

**

table))

Jack: 4098; Sjoerd: 4127; Dcab: 8637678

那在与新的内置函数vars()结合时尤其有用,它回到二个包含全数地点变量的字典,字符串格式化方法str.format()的姣好介绍请参见Format String Syntax

不无正式的行列操作(索引、分片、乘法、决断成员身份、求长度、取最小值和最大值)对字符串同样适用;

5.1.1 旧式字符串格式化

%操作符也得以用来格式化字符串,它像:cfunc:’sprintf-’格式化字符串风格一模二样解释左参数并功效于右参数,况且从该格式化操作中回到字符串结果,例如:

>>> import math

>>> print(’The value of PI is approximately %5.3f.’ % math.pi)

The value of PI is approximately 3.142.

由于str.format()是新扩展方法,python的数不胜数代码依然用%操作符。然而,由于那几个旧格式化风格最终会从言语中移除掉。Str.format就能够大规模采用。

越多的音信请查看旧式字符串格式化 部分。

5.1 式化输出...

字符串都是不可变的

于是,类似一下的分片赋值是违法的:

[python]  

website = ''  

website[-3:] = 'com'  

 

字符串格式化

字符串格式化适用字符串格式化操作符即百分号%来落到实处。

在%的左边手停放三个字符串(格式化字符串),而左侧则停放希望格式化的值。

[python]  

format = 'Hello,%s,%s enough for ya?'  

values = ('world','Hot')  

print (format % values)  

输出:Hello,world,Hot enough for ya?

注:%s称为调换表明符(conversion specifier),s表示值会被格式为字符串-假如不是字符串,则会用str将其更改为字符串

===============================格式化实数(浮点数),使用f表达符类型

提供所须求的精度:

叁个句点再加上希望保留的小数位数。因为格式化表明符总是以表示项目标字符截止,所以精度应该献身类型字符前面:

[python]  

format = 'Pi with three decimals:%.3f'  

from math import pi  

print (format % pi)  

输出:Pi with three decimals:3.142

==============================模板字符串

string模块提供其他一种格式化值的章程:模板字符串。它的干活办法左近于广大UNIX SHELL里的变量替换。

如:substitute那一个模板方法会用传递步入的要紧字参数foo替换字符串中的$foo

[python]  

from string import Template  

s = Template('$x,glorious $x!')  

s.substitute(x='slurm')  

输出:slurm,glorious slurm!

=============================替换字段的第一部分用{}

[python]  

s = Template("It`s ${x}tastic")  

s.substitute(x='slurm')  

 

=============================能够行使$$插入加元符号

[python] 

s = Template("Make $$ selling $!")  

s.substituts(x='slurm')  

 

=============================除了十分重要字参数外,还是能够利用字典变量提供值/名称对

[python]  

s = Template("A $thing must never $action")  

d = {}  

d[thing]='gentleman'  

d[action]='show his socks'  

s.substituts(d)  

 

字符串格式化调换类型

d,i 带符号的十进制整数

o 不带符号的八进制

u 不带符号的十进制

x 不带符号的十六进制--小写

X 不带符号的十六进制--大写

e 科学计数法表示的浮点数--小写

E 科学计数法表示的浮点数--大写

f,F 十进制浮点数

g 尽管指数大于-4依旧小于精度值则和e同样,其余情形与f同样

G 假诺指数大于-4要么小于精度值则和E一样,其余情况与F同样

C 单字符

r 字符串(使用repr调换自便Python对象)

s 字符串(使用str调换大肆Python对象)

1、轻便调换   www.2cto.com

粗略的调换只供给写出调换类型,使用起来异常粗略

[python]  

'Price of eggs: %d' %42  

输出:Price of eggs:42

 

2、字段宽度和精度

改动表达符能够归纳字段宽度和精度。字段宽度是更改后的值所保留的细微字符数个数,精度则是结果应当富含的小数位数,只怕是改换后的值所能包涵的最大字符个数。

那五个参数都以整数(首先是字符宽度,然后是精度),通过点号(.) 分隔。

[python]  

'%10f' %42 #字段宽度10  

'%10.2f' %42 #字段宽度10 精度2  

'%.2f' %42 #精度2  

能够利用*作为字段宽度可能精度

[python]  

'%.*s' %(5,'Guido van Rossum')  

输出:'Guido'

全数专门的学问的行列操作(索引、分片、乘法、推断成员身份、求长度、取最小值和最大值)对字符串同样适用; 字符串都以不可...

本文由六合联盟网发布于编程应用,转载请注明出处:python学习笔记,2官方文档教程

关键词: