在日常工作中,我们难免会遇到需要将数据以特定的格式输出的场景。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,都为我们提供了便捷的字符串输出方式。在编写代码时,可以根据需要选择不同的方法,使代码更加简洁、易读。