zoukankan      html  css  js  c++  java
  • 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}
    {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}'
    
  • 相关阅读:
    【血型】+【星座】准到吓人
    一落叶而知秋为什么有些树到冬天要落叶?
    WebDAV介绍
    Ruby concurrency explained
    lexus.cnblogs.com
    微博拉近了大家的距离
    High Performance Ruby Part 3: nonblocking IO and web application scalability
    Taglib确实减轻了开发负担[转]
    php中urldecode()和urlencode()起什么作用啊
    header中ContentDisposition的作用
  • 原文地址:https://www.cnblogs.com/sidianok/p/11780399.html
Copyright © 2011-2022 走看看