Python基础之字符串操作,格式化。

Python字符串现在感觉在日常的使用中不多,但仔细看了书以后一些小技巧还是很方便的,我这里简单的记录下。

插入一个超搞逼格的:

.format_map(其实这个是字符串的方法。。。。。)

In [83]: info = {"name": "sidian", "age": 18}                                                         

In [84]: "my name is {name},age is {age}".format_map(info)                                            
Out[84]: 'my name is sidian,age is 18'

 当你做好一个键值对的数据表,格式化输出不要爽死了

插入完毕~

首先就来个高逼格的:

>>> name='sidian'
>>> f'my name is {name}'
'my name is sidian'

 这个效果跟'my name is {name}'.format(name='sidian')一样,但我觉的我写成上面的写法,别人看我代码肯定特别装13

>>> names = ['yidian', 'erdian', 'sandian']
>>> 'you name is {name[1]}'.format(name=names)
'you name is erdian'

 这种写法里面写了关键字写法,关键字里面取值,后面的关键字参数复制列表,感觉方便度一般般

还不如直接写

>>> 'you name is {name}'.format(name=names[1])
'you name is erdian'

 这样逻辑更加清楚点,反正我这么觉的。

千位分隔符,这个有意思。

>>> 'num is {:,}'.format(1000**10)
'num is 1,000,000,000,000,000,000,000,000,000,000'

 这个可以在输出大数字的让人看过去比较舒服

关键这里这个:,这个冒号的左边填写索引关键字(0或1或2),冒号的右边填写一些输出的形式与格式(:0.2f或:05.3f)

右边的花样千万种,我挑书中的集中展示下:

>>> from math import pi
>>> '{:010.2f}'.format(pi)
'0000003.14'
>>> 

 这个比较好理解,左边没写参数按照默认顺序,右边第一个0为填充数,第二个10为数字个数为10位,第三个2为小数点有效数为2,最后一个f为数据类型为float类型。

>>> '{:<0.2f}'.format(pi)
'3.14'
>>> '{:<10.2f}'.format(pi)
'3.14      '
>>> '{:^10.2f}'.format(pi)
'   3.14   '
>>> '{:>10.2f}'.format(pi)
'      3.14'

通过这个可以看到:后面的<^>分别左对齐,居中,右对齐,后面数字的意思前面已经解释过了。

>>> '{:$^20}'.format('ok')
'$$$$$$$$$ok$$$$$$$$$'
>>> 

 文字字符格式化:右边第一个是填充数字,第二个居中符号标志,第三个为字符串长度

>>> print('{0:10.2f}\n{1:&=10.2f}'.format(pi,-pi))
      3.14
-&&&&&3.14
>>> print('{0:10.2f}\n{1:=10.2f}'.format(pi,-pi))
      3.14
-     3.14
>>> print('{0:10.2f}\n{1:10.2f}'.format(pi,-pi))
      3.14
     -3.14

 这里有三个输出,分别从复杂到简单,最后一个其实很简单,就是位置格式话输出两个参数,只不过一个编程了负数

第二个:右边出现了一个等于,这个有意思,它能够让符号与数字之间产生空格,默认就是空格。

第一个:右边出现了一个填充元素&,这样在符号与数字之间可以自己定义不同的符号。

>>> print('{0:10.2f}\n{1:&<10.2f}'.format(pi,-pi))
      3.14
-3.14&&&&&
>>> print('{0:10.2f}\n{1:&^10.2f}'.format(pi,-pi))
      3.14
&&-3.14&&&

 其实在前面的数字居中,左对齐,右对齐,也可以添加填充元素,默认的填充元素为空格。

这里说明一下如何格式话输出+-号:

In [6]: '{0:-.2}'.format(pi)                                                                          
Out[6]: '3.1'

In [7]: '{0:-.2f}'.format(pi)                                                                         
Out[7]: '3.14'

In [8]: '{0:+.2}'.format(pi)                                                                          
Out[8]: '+3.1'

In [9]: '{0:-.2}'.format(pi)                                                                          
Out[9]: '3.1'

In [10]: '{0:-.2}'.format(-pi)                                                                        
Out[10]: '-3.1'

In [11]: '{0:+.2}'.format(-pi)                                                                        
Out[11]: '-3.1'

In [12]: '{:^+10.2}'.format(pi)                                                                       
Out[12]: '   +3.1   '

 通过上面的操作可以看出:

:右边默认其实就是-,实际操作中如果想添加+号,可以在:右边添加+,如果右对其符号应该在对齐符号(<、^、>)的右边;

按照前面测试的这么多,我基本给自己总结了一下在冒号右边第一位是填充符号(默认为空格)

第二位为对其符号(<、^、>)

第三位aa.b为aa为字符串长度,b为实际精度。

In [18]: '{:8.2}'.format(5800)                                                                        
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-18-e85d3e6ac999> in <module>
----> 1 '{:8.2}'.format(5800)

ValueError: Precision not allowed in integer format specifier

In [19]: '{:8.2}'.format(3.985)                                                                       
Out[19]: '     4.0'

'{:8.2}'.format('做人没意思')                                                                
Out[20]: '做人      '

 从上面的测试看出数字默认的对齐方式是右对齐,字符串是左对齐,还搞这么麻烦

而且这种方式格式化不能输入整数

第四位如果在{:5.2f}这样的案例,就是说明数值取5位,小数点后面取2位。

In [22]: '{:8.2f}'.format(3.1415926)                                                                  
Out[22]: '    3.14'

格式化输出{}:

In [26]: '{{:{}}}'.format(10)                                                                         
Out[26]: '{:10}'
而且这种方式格式化不能输入整数
[Érqiě zhè zhǒng fāngshì géshì huà bùnéng shūrù zhěngshù]
And this way can not enter an integer format

猜你喜欢

转载自www.cnblogs.com/sidianok/p/11780399.html
今日推荐