Python基础07 字符串格式

将值转换为字符串并设置其格式是一个重要的操作。

 

一、精简版

1、使用字符串格式运算符---%

>>> format = "Hello, %s!"
>>> value = "Python"
>>> format % value
'Hello, Python!'

%s称为转换说明符,s意味着将值视为字符串进行格式设置。

 

如果要设置多个值的格式,可使用元组:

>>> format = "Hello, %s! %s year."
>>> values = ("Python", "Good")
>>> format % values
'Hello, Python! Good year.'

2、使用字符串方法---format

编写新代码时,应选择使用字符串方法format,它融合并强化了早期方法的优点。

每个替换字段都用花括号括起。

 

最简单的情况下,替换字段没有名称或将索引用作名称。

>>> "{}, {} and {}".format("first", "second", "third")
'first, second and third'
>>> "{0}, {1} and {2}".format("first", "second", "third")
'first, second and third'
>>> "{1}, {2} and {0}".format("first", "second", "third")
'second, third and first'

 

也可以对替换字段进行命名:

>>> from math import pi
>>> "{name} is {value:.2f}".format(value=pi, name="Pi")
'Pi is 3.14'

 

二、完整版

这里的基本思想是对字符串调用方法format,并提供要设置其格式的值。

 

替换字段由如下几部分组成,每个部分都是可选的:

  字段名: 索引或标识符,指出要设置哪个值的格式并使用结果来替换该字段。

  转换标志:跟在叹号后面的单个字符。当前支持的字符包括r(表示repr)、s(表示str)、a(表示ascii)。

  格式说明符:跟在冒号后面的表达式。

 

1、替换字段名

>>> "{foo} {} {bar} {}".format(1, 2, bar=4, foo=3)
'3 1 4 2'

 

还可通过索引来指定要在哪个字段中使用相应的未命名参数。

>>> "{foo} {1} {bar} {0}".format(1, 2, bar=4, foo=3)
'3 2 4 1'

 

还可以使用值的组成部分:

>>> users = ['Mike', 'John']
>>> "Mr {name[1]}".format(name=users)
'Mr John'

>>> import math
>>> tmpl = "The {mod.__name__} module defines the value {mod.pi} for Pi"
>>> tmpl.format(mod=math)
'The math module defines the value 3.141592653589793 for Pi'

 

2、基本转换

>>> print("{pi!s} {pi!r} {pi!a}".format(pi="π"))
π 'π' '\u03c0'

s通常创建外观普通的字符串版本。

r尝试创建给定值的Python表示。

a创建只包含ASCII字符的表示。

 

你还可指定要转换的值是哪种类型。

>>> "The number is {num}".format(num=42)
'The number is 42'
>>> "The number is {num:f}".format(num=42)
'The number is 42.000000'
>>> "The number is {num:b}".format(num=42)
'The number is 101010'

 

字符串格式设置中的类型说明符:

b    将整数表示为二进制数

c    将整数解读为Unicode值

d    将整数视为十进制数进行处理,这是整数默认使用的说明符

e    使用科学表示法来表示小数(用e来表示指数)

E    与e相同,但用E来表示指数

f    将小数表示为定点数

F    与f相同,但对于特殊值(nan和inf),使用大写表示

g    自动在定点表示法和科学表示法之间做出选择。这是默认用于小数的说明符

G    与g相同,但使用大写来表示指数和特殊值

n    与g相同,但插入随区域而异的数字分隔符

o    将整数表示为八进制数

s    保持字符串的格式不变

x    将整数表示为十六进制数并使用小写字母

X    与x相同,但使用大写字母

%    将数表示为百分比值

 

3、宽度、精度和千位分隔符

宽度是使用整数指定的:

>>> "{num:10}".format(num=3)
'         3'
>>> "{name:10}".format(name="Python")
'Python    '

如上所见,数字和字符串的对齐方式是不同的。

 

精度也是使用整数指定的,但需要在它前面加上一个表示小数点的句点。

>>> import math
>>> "Pi day is {pi:.2f}".format(pi=math.pi)
'Pi day is 3.14'

 

也可以同时指定宽度和精度:

>>> "{pi:10.2f}".format(pi=math.pi)
'      3.14'

 

可使用逗号来指出要添加千位分隔符:

>>> "One googol is {:,}".format(10**10)
'One googol is 10,000,000,000'

同时指定其他格式设置元素时,这个逗号应该放在宽度和表示精度的句点之间。

>>> "One googol is {:50,.2f}".format(10**10)
'One googol is                                  10,000,000,000.00'

 

posted on 2020-03-06 19:46  麦克煎蛋  阅读(327)  评论(0编辑  收藏  举报