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} {1:&=10.2f}'.format(pi,-pi)) 3.14 -&&&&&3.14 >>> print('{0:10.2f} {1:=10.2f}'.format(pi,-pi)) 3.14 - 3.14 >>> print('{0:10.2f} {1:10.2f}'.format(pi,-pi)) 3.14 -3.14
这里有三个输出,分别从复杂到简单,最后一个其实很简单,就是位置格式话输出两个参数,只不过一个编程了负数
第二个:右边出现了一个等于,这个有意思,它能够让符号与数字之间产生空格,默认就是空格。
第一个:右边出现了一个填充元素&,这样在符号与数字之间可以自己定义不同的符号。
>>> print('{0:10.2f} {1:&<10.2f}'.format(pi,-pi)) 3.14 -3.14&&&&& >>> print('{0:10.2f} {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}'