Python字符串格式化

目录

字符串是指由零个或多个字符组成的有限序列,是编程语言中最常用的数据类型之一。字符串是由单引号或双引号括起来的任意文本,比如’abc’,”xyz”等等。请注意,’‘或”“本身只是一种表示方式,不是字符串的一部分,因此,字符串’abc’只有a,b,c这3个字符。

字符串的格式化是指在字符串中插入变量,格式化字符串的输出方式有很多种,比如通过%操作符,format方法,字符串字面值插值等。

通过%操作符格式化

'Hell %s' % 'world'

%s 表示字符串,%d 表示整数,%f 表示浮点数,%x 表示十六进制整数。

# 多个%操作符
'we have bought %d apples, %d oranges and %d pears' % (3, 5, 2)
'we have %d apples, and the apples come from %s' % (3, 'China')

通过format方法格式化

'Hello {0},welcome to {1}.'.format('Jack','China') # 0表示第一个参数,1表示第二个参数

你还可以用别名以任意顺序替换变量。这是一个非常强大的功能,不必修改传递给格式函数的参数就可以重新排列显示顺序。

'Hey {name}, welcome to {country}.'.format(country='China',name='Jack')

字符串字面值插值

Python 3.6 增加了另一种格式化字符串的方法,称为格式化字符串字面值(formatted string literal)。采用这种方法,可以在字符串常量内使用嵌入的 Python 表达式。

a = 3
b = 5
f'we have bought {a} apples, {b} oranges and now the total fruit number is {a+b}.'

本质上,格式化字符串字面值是 Python 解析器的功能:将 f 字符串转换为一系列字符串常量和表达式,然后合并起来构建最终的字符串。

这种方法的优点是,它不仅更简洁,而且还更快。因为它不需要调用任何函数,而是由解析器在编译时处理。

在函数中使用该格式化语法,如下:

def greet(name, question):
    return f"Hello, {name}! How's it {question}?"
greeter = greet('Jack', 'going')
print(greeter)

模板字符串

其他字符串格式化技术所用的语法更复杂,因而可能会给程序带来安全漏洞。因此,Python 3.6 引入了一种新的字符串格式化方法,称为模板字符串(template string)。

from string import Template
t = Template('we have bought $num1 apples, $num2 oranges and now the total fruit number is $total.')
t.substitute(num1=3,num2=5,total=8)

来源

《深入理解Python特性》P022 - P027

打赏一个呗

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦