zoukankan      html  css  js  c++  java
  • 字符串的格式化

    字符串的格式化种类

    1、%:功能有限。比较古老
    2、str.format():功能比较多,技术比较新(有可能替代掉%的趋势)
     
    如图:

     格式化输出

    实例1:独立元素格式化:(*args)
     1 #方法1:
     2 s1 = "i am {0},age {1}".format('alex',19)
     3 print('s1 -->',s1)
     4 
     5 
     6 #方法2:
     7 s2 = "i am {0},age {1}".format(*['alex',19])
     8 print('s2 -->',s2)
     9 
    10 显示结果:
    11 s1 --> i am alex,age 19
    12 s2 --> i am alex,age 19
    View Code
     实例2:通过字典格式化(**kwargs)
     1 #方法1:
     2 s3 = "i am {name},age {age}".format(name='alex',age=19)
     3 print('s3 -->',s3)
     4 
     5 
     6 #方法2:
     7 dic={'name':'alex','age':19}
     8 s4 = "i am {name},age {age}".format(**dic)
     9 print('s4 -->',s4)
    10 
    11 显示结果:
    12 s3 --> i am alex,age 19
    13 s4 --> i am alex,age 19
    View Code

    字符串格式化----百分号方式(%)

    一、%的格式化功能:
    格式:%[(name)][flags][width].[precision]typecode
     1 (name):可选,用于选择指定的key
     2 flags: 可选,可供选择的值有:
     3 +:     右对齐;正数前加正好,负数前加负号;
     4 -:     左对齐;正数前无符号,负数前加负号;
     5 空格:  右对齐;正数前加空格,负数前加负号;
     6 0:     右对齐;正数前无符号,负数前加负号;用0填充空白处
     7  可选,占有宽度
     8 .precision:可选,小数点后保留的位数
     9 typecode:必选
    10 s,获取传入对象的__str__方法的返回值,并将其格式化到指定位置
    11 r,获取传入对象的__repr__方法的返回值,并将其格式化到指定位置
    12 c,整数:将数字转换成其unicode对应的值,10进制范围为 0 <= i <= 1114111(py27则只支持0-255);字符:将字符添加到指定位置
    13 o,将整数转换成 八  进制表示,并将其格式化到指定位置
    14 x,将整数转换成十六进制表示,并将其格式化到指定位置
    15 d,将整数、浮点数转换成 十 进制表示,并将其格式化到指定位置
    16 e,将整数、浮点数转换成科学计数法,并将其格式化到指定位置(小写e)
    17 E,将整数、浮点数转换成科学计数法,并将其格式化到指定位置(大写E)
    18 f, 将整数、浮点数转换成浮点数表示,并将其格式化到指定位置(默认保留小数点后6位)
    19 F,同上
    20 g,自动调整将整数、浮点数转换成 浮点型或科学计数法表示(超过6位数用科学计数法),并将其格式化到指定位置(如果是科学计数则是e;)
    21 G,自动调整将整数、浮点数转换成 浮点型或科学计数法表示(超过6位数用科学计数法),并将其格式化到指定位置(如果是科学计数则是E;)
    22 %,当字符串中存在格式化标志时,需要用 %%表示一个百分号
    23 
    24 注:Python中百分号格式化是不存在自动将整数转换成二进制表示的方式
    参数说明

    二、常用的格式化操作:

     1 #字符串:
     2 tpl = "i am %s" % "alex"
     3 print('tpl--->',tpl)
     4 
     5 #字符串 + 数字
     6 tpl1 = "i am %s age %d" % ("alex", 18)
     7 print('tpl1--->',tpl1)
     8 
     9 #别名 + {} 方式
    10 tpl2 = "i am %(name)s age %(age)d" % {"name": "alex", "age": 18}
    11 print('tpl2--->',tpl2)
    12 
    13 #浮点 + 提取指定位数
    14 tpl3 = "percent %.2f" % 99.97623
    15 print('tpl3--->',tpl3)
    16 
    17 #别名 + 浮点 + 提取指定位数 
    18 tpl4 = "i am %(pp).2f" % {"pp": 123.425556, }
    19 print('tpl4--->',tpl4)
    20 
    21 #显示"%"号 + 别名 + 浮点 + 提取指定位数 
    22 tpl5 = "i am %(pp).2f %%" % {"pp": 123.425556, }
    23 print('tpl5--->',tpl5)
    24 
    25 
    26 显示结果:
    27 tpl---> i am alex
    28 tpl1---> i am alex age 18
    29 tpl2---> i am alex age 18
    30 tpl3---> percent 99.98
    31 tpl4---> i am 123.43
    32 tpl5---> i am 123.43 %
    View Code

    三、其他练习:

     1 1、占位符格式化:
     2 s = "讲课老师%s,年龄%d,听课学生%s" %('alex',32,'dy')
     3 print(s)
     4 
     5 #输出结果:
     6 讲课老师alex,年龄32,听课学生dy
     7 
     8 
     9 2、占位符别名格式化:(name:可用 "{ }" 进行传值)
    10 s = "讲课老师: %(teacher)s,年龄: %(age)d,听课学生: %(students)s" %{'teacher':'alex','age':32,'students':'dy'}
    11 print(s)
    12 
    13 #输出结果:
    14 讲课老师: alex,年龄: 32,听课学生: dy
    15 
    16 
    17 3、左右对齐方式:【flags:需要结合宽度(width)一起使用】
    18 s = "讲课老师: %(teacher)+10s,年龄: %(age)d,听课学生: %(students)s" %{'teacher':'alex','age':32,'students':'dy'}
    19 print(s)
    20 
    21 #输出结果
    22 讲课老师:       alex,年龄: 32        ,听课学生: dy
    23 
    24 
    25 
    26 4、正负数的值:
    27 s = "讲课老师: %(teacher)-10s,年龄: %(age)+10d,听课学生: %(students)+10s,年龄:%(age1)-10d" %{'teacher':'alex','age':+32,'students':'dy','age1':-30}
    28 print(s)
    29 
    30 #输出结果:
    31 讲课老师: alex      ,年龄:        +32,听课学生:         dy,年龄:-30
    32 
    33 
    34 
    35 5、浮点:
    36 s = "讲课老师: %(teacher)-10s,年龄: %(age)+10d,听课学生: %(students)+10s,年龄:%(age1)-10d,%(p)f" 
    37     %{'teacher':'alex','age':+32,'students':'dy','age1':-30,"p":1.234567}
    38 print(s)
    39 
    40 #显示结果:
    41 讲课老师: alex      ,年龄:        +32,听课学生:         dy,年龄:-30       ,1.234567
    42 
    43 
    44 
    45 6、浮点保留"N"为小数:
    46 s = "讲课老师: %(teacher)-10s,年龄: %(age)+10d,听课学生: %(students)+10s,年龄:%(age1)-10d,%(p).2f" 
    47     %{'teacher':'alex','age':+32,'students':'dy','age1':-30,"p":1.234567}
    48 
    49 print(s)
    50 
    51 #x显示结果:
    52 讲课老师: alex      ,年龄:        +32,听课学生:         dy,年龄:-30       ,1.23
    View Code

    字符串格式化---Format方式

    一、format格式化与百分号的有差异:
    1、支持占位符填充
    2、可以居中
    3、%可以进行转换百分比
    4、#可以2 4 8进制的添加
    ........
     
     
    二、格式:
     1 [[fill]align][sign][#][0][width][,][.precision][type]
     2 
     3 
     4 fill    :【可选】在空白处填充的字符(只能填充一个字符)
     5 align:【可选】对齐方式(需配合width使用)
     6         <,内容左对齐
     7         >,内容右对齐(默认)
     8         =,内容右对齐,将符号放置在填充字符的左侧,且只对数字类型有效。 即使:符号+填充物+数字
     9         ^,内容居中
    10 sign:【可选】有无符号数字
    11         +,正号加正,负号加负;
    12         -,正号不变,负号加负;
    13         空格 ,正号空格,负号加负;
    14 #   :【可选】对于二进制、八进制、十六进制,如果加上#,会显示 0b/0o/0x,否则不显示
    15 , :【可选】为数字添加分隔符,如:1,000,000
    16 【可选】格式化位所占宽度
    17 .precision:【可选】小数位保留精度
    18 type  :【可选】格式化类型
    19         传入” 字符串类型 “的参数
    20         s,格式化字符串类型数据
    21         空白,未指定类型,则默认是None,同s
    22         传入“ 整数类型 ”的参数
    23         b,将10进制整数自动转换成2进制表示然后格式化
    24         c,将10进制整数自动转换为其对应的unicode字符
    25         d,十进制整数
    26         o,将10进制整数自动转换成8进制表示然后格式化;
    27         x,将10进制整数自动转换成16进制表示然后格式化(小写x)
    28         X,将10进制整数自动转换成16进制表示然后格式化(大写X)
    29         传入“ 浮点型或小数类型 ”的参数
    30         e, 转换为科学计数法(小写e)表示,然后格式化;
    31         E, 转换为科学计数法(大写E)表示,然后格式化;
    32         f , 转换为浮点型(默认小数点后保留6位)表示,然后格式化;
    33         F, 转换为浮点型(默认小数点后保留6位)表示,然后格式化;
    34         g, 自动在e和f中切换
    35         G, 自动在E和F中切换
    36         %,显示百分比(默认显示小数点后6位)
    View Code

    三、传参:

     1 tpl = "i am {}, age {}, {}".format("seven", 18, 'alex')
     2 print('tpl--->',tpl)
     3 
     4 #*+列表+位置传值:(如果传值列表,必须要加上 " * ",如果不加*,则会把整个列表当初一个元素)
     5 tpl1 = "i am {}, age {}, {}".format(*["seven", 18, 'alex'])
     6 print('tpl1--->',tpl1)
     7 
     8 
     9 #索引的方式传值:
    10 tpl2 = "i am {0}, age {1}, really {0}".format("seven", 18)
    11 print('tpl2--->',tpl2)
    12 
    13 
    14 #索引+列表+(*args)传值:
    15 tpl3 = "i am {0}, age {1}, really {0}".format(*["seven", 18])
    16 print('tpl3--->',tpl3)
    17 
    18 
    19 #别名传值:
    20 tpl4 = "i am {name}, age {age}, really {name}".format(name="seven", age=18)
    21 print('tpl4--->',tpl4)
    22 
    23 
    24 #别名+(**kwargs)传值:
    25 tpl5 = "i am {name}, age {age}, really {name}".format(**{"name": "seven", "age": 18})
    26 print('tpl5--->',tpl5)
    27 
    28 
    29 #索引+索引【下标】的传值:
    30 tpl6 = "i am {0[0]}, age {0[1]}, really {0[2]}".format([1, 2, 3], [11, 22, 33])
    31 print('tpl6--->',tpl6)
    32 
    33 
    34 #指定类型传值:字符串、数字、小数点
    35 tpl7 = "i am {:s}, age {:d}, money {:f}".format("seven", 18, 88888.1)
    36 print('tpl7--->',tpl7)
    37 
    38 
    39 #指定类型+顺序+(*args)传值:
    40 tpl8 = "i am {:s}, age {:d}".format(*["seven", 18])
    41 print('tpl8--->',tpl8)
    42 
    43 
    44 #别名+指定类型传值:
    45 tpl9 = "i am {name:s}, age {age:d}".format(name="seven", age=18)
    46 print('tpl9--->',tpl9)
    47 
    48 
    49 #别名+指定类型+(**kwargs)传值:
    50 tpl10 = "i am {name:s}, age {age:d}".format(**{"name": "seven", "age": 18})
    51 print('tpl10--->',tpl10)
    52 
    53 
    54 #2 8 10 16进制+百分号传值
    55 tpl11 = "numbers: {:b},{:o},{:d},{:x},{:X}, {:%}".format(15, 15, 15, 15, 15, 15.87623, 2)
    56 print('tpl11--->',tpl11)
    57 
    58 
    59 tpl12 = "numbers: {:b},{:o},{:d},{:x},{:X}, {:%}".format(15, 15, 15, 15, 15, 15.87623, 2)
    60 print('tpl12--->',tpl12)
    61 
    62 
    63 #索引+2 8 10 16+百分号传值: 
    64 tpl13 = "numbers: {0:b},{0:o},{0:d},{0:x},{0:X}, {0:%}".format(15)
    65 print('tpl13--->',tpl13)
    66 
    67 
    68 #别名+2 8 10 16 +百分号传值:
    69 tpl14 = "numbers: {num:b},{num:o},{num:d},{num:x},{num:X}, {num:%}".format(num=15)
    70 print('tpl14--->',tpl14)
    71 
    72 
    73 输出结果:
    74 tpl---> i am seven, age 18, alex
    75 tpl1---> i am seven, age 18, alex
    76 tpl2---> i am seven, age 18, really seven
    77 tpl3---> i am seven, age 18, really seven
    78 tpl4---> i am seven, age 18, really seven
    79 tpl5---> i am seven, age 18, really seven
    80 tpl6---> i am 1, age 2, really 3
    81 tpl7---> i am seven, age 18, money 88888.100000
    82 tpl8---> i am seven, age 18
    83 tpl9---> i am seven, age 18
    84 tpl10---> i am seven, age 18
    85 tpl11---> numbers: 1111,17,15,f,F, 1587.623000%
    86 tpl12---> numbers: 1111,17,15,f,F, 1587.623000%
    87 tpl13---> numbers: 1111,17,15,f,F, 1500.000000%
    88 tpl14---> numbers: 1111,17,15,f,F, 1500.000000%
    传参示例

    更多格式化方法

     https://docs.python.org/3/library/string.html

     
     
     
     
     
     
     
  • 相关阅读:
    heat模板
    Leetcode812.Largest Triangle Area最大三角形面积
    Leetcode812.Largest Triangle Area最大三角形面积
    Leetcode811.Subdomain Visit Count子域名访问计数
    Leetcode811.Subdomain Visit Count子域名访问计数
    Leetcode806.Number of Lines To Write String写字符串需要的行数
    Leetcode806.Number of Lines To Write String写字符串需要的行数
    Leetcode819.Most Common Word最常见的单词
    Leetcode819.Most Common Word最常见的单词
    Leetcode783.Minimum Distance Between BST Nodes二叉搜索树结点最小距离
  • 原文地址:https://www.cnblogs.com/abobo/p/8110611.html
Copyright © 2011-2022 走看看