在日常工作中,我们难免会遇到需要将数据以特定的格式输出的场景。Python中的字符串格式化提供了一种简单、快捷的方式,可以让我们方便地输出格式化的字符串,从而满足不同需求。
一、基本字符串格式化
# 使用百分号 % 进行字符串格式化
name = 'Python'
version = '3.8'
print('Hello, %s %s!' % (name, version))
# 输出结果:Hello, Python 3.8!
在上面的示例中,我们使用了百分号 % 进行字符串格式化,%s 表示字符串占位符,%后面的括号中用逗号分隔多个占位符对应的值。这种方式是 Python2.x 中的方式。
# 使用format()方法进行字符串格式化
name = 'Python'
version = '3.8'
print('Hello, {} {}!'.format(name, version))
# 输出结果:Hello, Python 3.8!
# 使用位置参数指定占位符
name = 'Python'
version = '3.8'
print('Hello, {0} {1}!'.format(name, version))
# 输出结果:Hello, Python 3.8!
# 使用关键字参数指定占位符
name = 'Python'
version = '3.8'
print('Hello, {name} {version}!'.format(name=name, version=version))
# 输出结果:Hello, Python 3.8!
在 Python3.x 中,更推荐使用 format()
方法进行字符串格式化。format()
方法通过大括号 {}
进行字符串的占位。format()
方法可以按照位置、关键字等不同的方式传递参数。
二、格式化字符串字面值(f-string)
# 使用格式化字符串字面值输出变量
name = 'Python'
version = '3.8'
print(f'Hello, {name} {version}!')
# 输出结果:Hello, Python 3.8!
在 Python 3.6 中,新增了格式化字符串字面值(f-string)的语法。使用 f-string 可以很方便地在字符串中加入变量。只需要在字符串前加上 f
或 F
就可以创建一个 f-string。
三、使用格式化占位符
1. 字符串格式化占位符
# 使用 %s 占位符格式化字符串
name = 'Monty'
print('My name is %s' % name)
# 输出结果:My name is Monty
# 使用 %r 占位符格式化字符串
name = 'Monty'
print('My name is %r' % name)
# 输出结果:My name is 'Monty'
在字符串格式化时,除了 %s
外,还可以使用 %r
占位符。%s
和 %r
都可以表示字符串,区别在于 %s
输出的是字符串,而 %r
输出的是字符串的原始代码。如果想要输出被双引号或单引号包裹的字符串,可以使用 %s
,如果想要输出字符串的表达式形式,可以使用 %r
。
2. 数字格式化占位符
# 格式化整型数字
num = 12345
print('Int: %d' % num)
# 输出结果:Int: 12345
# 格式化浮点型数字
pi = 3.1415926
print('PI: %.2f' % pi)
# 输出结果:PI: 3.14
除了字符串,还可以使用数字格式化占位符。%d
表示整型数字,%f
表示浮点型数字。除了这两个占位符之外,还可以使用 %e
表示科学计数法表示的浮点型数字。
3. 宽度、精度与千位分隔符
# 宽度和精度控制
num = 123.456
print('Num: %10.2f' % num)
# 输出结果:Num: 123.46
# 千位分隔符
num = 1234567890
print('Num: {:,}'.format(num))
# 输出结果:Num: 1,234,567,890
在占位符中可以使用数字控制输出格式的宽度和精度,可以在占位符中添加两个数字,分别表示宽度和精度。当宽度小于数字的位数时,会按原样输出数字。
四、总结
在 Python 中,字符串格式化提供了多种方法,可以满足不同的输出需求。从传统的百分号格式化、format()
方法、到新增的 f-string,都为我们提供了便捷的字符串输出方式。在编写代码时,可以根据需要选择不同的方法,使代码更加简洁、易读。