python基础——使用字符串

设置字符串的格式

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

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

然而,索引无需像上面这样按顺序排列。

>>> "{3} {0} {2} {1} {3} {0}".format("be", "not", "or", "to") 
'to be or not to be' 

命名字段的工作原理与你预期的完全相同。

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

当然,关键字参数的排列顺序无关紧要。在这里,我还指定了格式说明符.2f,并使用冒号将其与字段名隔开。它意味着要使用包含2位小数的浮点数格式。如果没有指定.2f,结果将如下:

>>> "{name} is approximately {value}.".format(value=pi, name="π") 
'π is approximately 3.141592653589793.'

最后,在Python 3.6中,如果变量与替换字段同名,还可使用一种简写。在这种情况下,可使用f字符串——在字符串前面加上f。

>>> from math import e 
>>> f"Euler's constant is roughly {e}." 
"Euler's constant is roughly 2.718281828459045." 

在这里,创建最终的字符串时,将把替换字段e替换为变量e的值。这与下面这个更明确一些的表达式等价:

>>> "Euler's constant is roughly {e}.".format(e=e) 
"Euler's constant is roughly 2.718281828459045." 

替换字段名

#混合使用**未命名参数 **和**命名参数**
"{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'

然而,不能同时使用手工编号和自动编号
还可以访问值的组成部分

>>> fullname = ["Alfred", "Smoketoomuch"] 
>>> "Mr {name[1]}".format(name=fullname) 
'Mr Smoketoomuch' 
>>> import math 
>>> tmpl = "The {mod.__name__} module defines the value {mod.pi} for π" 
>>> tmpl.format(mod=math) 
'The math module defines the value 3.141592653589793 for π' 

如你所见,可使用索引,还可使用句点表示法来访问导入的模块中的方法、属性、变量和函数(看起来很怪异的变量__name__包含指定模块的名称)。

3.3.2 基本转换

指定要在字段中包含的值后,就可添加有关如何设置其格式的指令了。首先,可以提供一个
转换标志。

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

上述三个标志(s、r和a)指定分别使用str、repr和ascii进行转换。函数str通常创建外观普通的字符串版本(这里没有对输入字符串做任何处理)。函数repr尝试创建给定值的Python表示(这里是一个字符串字面量)。函数ascii创建只包含ASCII字符的表示,
表3-1 字符串格式设置中的类型说明符

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

猜你喜欢

转载自blog.csdn.net/acktomas/article/details/84665455