Python(8)--字符串格式化,Python格式化字符串,字符串:  所有标准


字符串:

  所有标准序列操作(索引、切片、乘法、成员资格检查、长度、最小值和最大值)都适用于字符串,但别忘了字符串是不可变的,因此所有的元素赋值和切片赋值都是非法的。


字符串格式化:format方法

  每个值都被插入字符串中,用来替用花括号括起来的替换字段

  替换字段由下面的部分组成:

  字段名:索引或者标识符,指出要设置哪个值的格式,并使用结果来替换该字段;还可以指定值的特殊部分,如列表内的元素

  转换标志:跟在感叹号后面的单个字符。支持的字符包括:r(表示repr)、s(表示str)、a(表示ascii)。如果指定了转换标志,就不会用对象本身的格式,而是用指定函数将对象转换成字符串,然后进行格式设置

  格式说明符:跟早冒号后面的表达式。让我们能详细的指定最终的格式,包括:格式类型、字段宽度、数的精度、如何显示符号、千位分隔符、各种对齐和填充方式


替换字段名:  

  向format提供要设置格式的未命名参数,并在格式字符串中使用,会按顺序将字段和参数配对

  可以给参数指定名称,该参数会对应在格式字符中的字段

>>> "{foo}{}{bar}{}".format(1, 3, bar="a", foo=5)‘51a3‘

  可以通过索引来指定要在哪个字段中使用相应的未命名参数,这样就可以不按顺序使用未命名参数

>>> "{foo}{1}{bar}{0}".format(1, 3, bar="a", foo=5)‘53a1‘

  可以使用提供值中的一部分部分

>>> f = ["hello", "world"]>>> "hi {foo[1]}".format(foo=f)‘hi world‘

  可以使用句点来使用导入模块中的方法、属性、变量、函数(__name__获取指定模块的名称)

>>> import math>>> tmp = "The {mod.__name__} module defines the value {mod.pi} for π">>> tmp.format( mod=math)‘The math module defines the value 3.141592653589793 for π‘

  


基本转换:

   使用转换标志设置值的格式

>>> print("{pi!s} {pi!r} {pi!a}".format(pi="π"))π ‘π‘ ‘\u03c0‘# s:str,将值创建为人易读的普通字符串# r:repr,将值创建成给定的Python表达式# a:ascii,创建ascii字符的表示

  将要转换的值视为哪种类型,比如一个整数,但是要作为小数处理,就在冒号后面加上:f。要当做二进制处理就加上:b

>>> "This number is {num}".format(num=33)‘This number is 33‘>>> "This number is {num:f}".format(num=33)‘This number is 33.000000‘>>> "This number is {num:b}".format(num=33)‘This number is 100001‘

  在冒号(格式说明符)后面使用类型说明符,类型说明符有:

b                # 将整数表示为二进制数c                # 将整数解读为Unicode码点d                #将整数视为十进制数进行处理,这是整数默认使用的说明符e                # 使用科学计数法来表示小数(e表示指数)E                # 与e相同,但是使用E来表示指数f                # 将小数表示为定点小数F                # 与f相同,但是对于特殊值(nan和inf),使用大写表示g                #自动在定点表示和科学计数表示之间做出选择;这是默认用于小数的说明符,默认情况下至少有一位小数G                #与g相同,但使用大写来表示指数和特殊值n                # 与g相同,但插入随区域而异的数字分隔符o                # 将整数表示为八进制数s                # 保持字符串的格式不变,默认用于字符串的说明符x                # 将整数表示为十六进制数并使用小写字母X                # 与x相同,但使用大写字母%                # 将数表示为百分比值(乘以100,按说明符f设置格式,再在后面加上%)

  


宽度:

  宽度使用整数指定

>>> "{num:10}".format(num=3)‘         3‘>>> "{name:10}".format(name="bone")‘bone      ‘# 可见数字是右对齐进行空位填充,字符串是左对齐进行填充

 


精度:

  设置浮点数格式默认保留6位小数,要更改序要设置精度

  精度使用整数指定,要在整数前面加上句点号:.

>>> "This number is {num:.2f}".format(num=33.345678)‘This number is 33.35‘# 可以同时指定宽度和精度>>> "This number is {num:10.2f}".format(num=33.345678)‘This number is      33.35‘

  


千位分隔符:

  使用逗号添加

>>> "number is {:,}".format(10**100)‘number is 10,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000‘

  同时指定其他格式设置时,逗号要放在表示宽度和表示精度的句点之间

 "number is {:12.2f}".format(99999999)‘number is  99999999.00‘>>> "number is {:12,.2f}".format(99999999)‘number is 99,999,999.00‘

  


对齐和填充:

  字符串和数字默认的对齐方式不同,若要修改对齐方式,可以在指定宽度和精度的数前面添加一个标志

# 左对齐:<# 右对齐:># 居中:^>>> print("{0:<10.2f}\n{0:>10.2f}\n{0:^10.2f}".format(3.1415926))3.14      3.14   3.14

  可以指定填充字符来替代默认的空格

>>> "{:#^16}".format("go")‘#######go#######‘

  等于号:=;用来将填充的字符放在符号和数字之间

>>> "{:=16.2f}".format(-3.1415)‘-           3.14‘>>> "{:#=16.2f}".format(-3.1415)‘-###########3.14‘

  给正数加上说明符,放在对齐说明符后面

# 默认设置,符号是:->>> print("{0:.2}\n{1:.2}".format(3.1415, -3.1415))3.1-3.1>>> print("{0:-.2}\n{1:-.2}".format(3.1415, -3.1415))3.1-3.1# 改为+号>>> print("{0:+.2}\n{1:+.2}".format(3.1415, -3.1415))+3.1-3.1# 指定为空格>>> print("{0: .2}\n{1: .2}".format(3.1415, -3.1415)) 3.1-3.1

  井号:#;将其放在符号说明符和宽度之间,将处罚一种转换方式,随类型而异

# 对于二进制、八进制、十六进制会加前缀>>> "{:b}".format(42)‘101010‘>>> "{:#b}".format(42)‘0b101010‘# 对于十进制,必须包含小数点(g类型保留小数点后的0)>>> "{:g}".format(42)‘42‘>>> "{:#g}".format(42)‘42.0000‘

  


Python(8)--字符串格式化

评论关闭