zoukankan      html  css  js  c++  java
  • [PY3]——内置数据结构(4)——字符串格式化(format)

    字符串格式化是拼接字符串的一种手段

    join和+拼接字符串的方法,难以控制格式

    printf style 字符串格式化

    这种方法是从c语言继承过来的

    # 待格式化的字符串:一个字符串存在占位符
    In [1]: s='i love %s'
    
    # 传入的参数顺序地替换占位符,并返回替换之后的字符串,但原串不变
    In [2]: s % ('python',)
    Out[2]: 'i love python'
    In [3]: s
    Out[3]: 'i love %s'
    
    # 传入的参数和占位符个数不匹配、或传入的参数和类型不匹配,则抛出TypeError
    In [4]: 'i love %s,i am %d' % ('python',22)
    Out[4]: 'i love python,i am 22'
    
    In [5]: 'i love %s,i am %d' % ('python',)
    TypeError: not enough arguments for format string
    
    In [6]: 'i love %s,i am %d' % ('python','sfc')
    TypeError: %d format: a number is required, not str
    
    In [11]: print('%s %%d' % 'python')
    python %d

    format

    # 使用大括号作为占位符,调用format时其传入的参数会替换大括号
    In [3]: s='i love {},i am {}';s.format('python',18)
    Out[3]: 'i love python,i am 18'
    
    # 可以在占位符中加数字来指定传入哪个参数,并且该位置参数可以多次使用
    In [4]: s='i love {1},i am {0}';s.format(18,'python')
    Out[4]: 'i love python,i am 18'
    
    In [5]: s='i love {1},i am {1}';s.format(18,'python')
    Out[5]: 'i love python,i am python'
    
    In [19]: '{0},{1},{2}'.format(*'abc')
    Out[19]: 'a,b,c'
    
    
    # 可以在占位符中加标识符来指定关键字参数,并且关键字参数和位置参数可以同时使用
    In [7]: s='my name is {0},i love {lang},i am {age}';s.format('jelly',lang='python',age=18)
    Out[7]: 'my name is jelly,i love python,i am 18'
    
    # 什么时候会抛出异常?
    # {}       是按照顺序来使用位置参数,那么当占位符和参数个数不匹配则抛出异常
    # {数字i}   会把传入的参数当成一个列表args,使用位置参数i索引(args[i])。当i不是args的索引时抛出IndexError。
    # {关键字k} 会把关键字参数当成一个字典kwargs,使用kwargs[k]。当k不是kwargs的key时,会抛出KeyError异常。
    
    In [10]: '{} {}'.format(88)
    ------------------------------------------------------
    IndexError           Traceback (most recent call last)
    <ipython-input-10-569fb0faf265> in <module>()
    ----> 1 '{} {}'.format(88)
    
    IndexError: tuple index out of range
    
    In [11]: '{} {lang}'.format(88)
    ------------------------------------------------------
    KeyError             Traceback (most recent call last)
    <ipython-input-11-8286ca2a6881> in <module>()
    ----> 1 '{} {lang}'.format(88)
    
    KeyError: 'lang'
    
    In [12]: '{1},{2},{3}'.format('a','b','c')   
    #分析:args=[a,b,c],args[i=1]='b',args[i=2]='c',args[i=3]=?故抛出IndexError
    ---------------------------------------------------------------------------
    IndexError                                Traceback (most recent call last)
    <ipython-input-5-bedd884b41e7> in <module>()
    ----> 1 '{1},{2},{3}'.format('a','b','c')
    
    IndexError: tuple index out of range




  • 相关阅读:
    音频、视频等文件格式(.ts、.meta)及其认识
    元素之和最接近 0 的区间(部分和)
    元素之和最接近 0 的区间(部分和)
    说话的智慧
    说话的智慧
    工业相机基本参数以及选型参考(二)
    常用编程软件站点、镜像站、科技类 PDF
    常用编程软件站点、镜像站、科技类 PDF
    经典书单 —— 语言/算法/机器学习/深度学习/AI/CV/PGM
    hdu1024 Max Sum Plus Plus
  • 原文地址:https://www.cnblogs.com/snsdzjlz320/p/6572515.html
Copyright © 2011-2022 走看看