在Python中,格式化字符串是一种将变量插入到字符串中的方法,使得字符串的构建更为灵活和方便。以下是一些常见的格式化字符串的方法:
文章目录
- 1. 使用百分号 `%` 格式化
- 2. 使用 `str.format()` 方法
- 3. 使用 f-string (格式化字符串字面量)
- 格式说明符
- 实操
- 字符串format方法格式控制
- 实操
1. 使用百分号 %
格式化
这是最传统的方法,类似于C语言中的printf。
name = "Alice"
age = 30
print("My name is %s and I am %d years old." % (name, age))
这里的 %s
是一个占位符,用于插入字符串,而 %d
用于插入整数。
2. 使用 str.format()
方法
Python 2.6+ 引入了 str.format()
方法,它提供了一种更灵活的格式化字符串的方式。
name = "Bob"
age = 25
print("My name is {} and I am {} years old.".format(name, age))
你还可以使用索引来指定参数的顺序:
print("My name is {1} and I am {0} years old.".format(age, name))
或者使用关键字参数:
print("My name is {name} and I am {age} years old.".format(name="Charlie", age=35))
3. 使用 f-string (格式化字符串字面量)
Python 3.6+ 引入了 f-string,它提供了一种更简洁、更直观的方式来格式化字符串。
name = "David"
age = 40
print(f"My name is {name} and I am {age} years old.")
在 f-string 中,你可以直接在 {}
中放入表达式,甚至是函数调用:
print(f"My name is {name.upper()} and next year I will be {age + 1}.")
格式说明符
在以上所有方法中,你都可以使用格式说明符来进一步定义格式化输出的方式:
<填充><对齐><宽度><,><.精度><类型>
例如:{:.2f}
:保留两位小数的浮点数{:^20}
:居中对齐,宽度为20的字符串{:0>10}
:右对齐,宽度为10,左边用0填充的字符串{:,}
:数字使用逗号作为千位分隔符
number = 1234567.8910
print(f"The number is {number:.2f}")
print(f"The number is {number:20,.2f}")
print(f"The string is {name:^20}")
print(f"The string is {name:0>10}")
以上就是Python中格式化字符串的几种方法,每种方法都有其适用的场景,你可以根据需要选择最适合的一种。在最新的Python代码中,f-string由于其简洁和直观性,通常是首选的格式化方法。
实操
# (1)使用占位符进行格式化
name = '马冬梅'
age = 18
score = 98.5
print('姓名:%s,%d年龄:,成绩:%.1f' % (name, age, score))# (2)f-string
print(f'姓名:{name},年龄:{age},成绩:{score}')# (3)使用字符串的format方法
print('姓名:{0},年龄:{1},成绩:{2}'.format(name, age, score))
print('姓名:{2},年龄:{0},成绩:{1}'.format(age, score,name))
字符串format方法格式控制
实操
s = 'helloworld'
print('{0:*<20}'.format(s)) # 字符串的显示宽度为20,左对齐,空白不凡使用*号填充
print('{0:*>20}'.format(s)) # 字符串的显示宽度为20,右对齐,空白不凡使用*号填充
print('{0:*^20}'.format(s)) # 字符串的显示宽度为20,居中对齐,空白不凡使用*号填充# 法2的居中对齐
print(s.center(20, '*'))# 千位分隔符(仅适用于整数和浮点数)
print('{0:,}'.format(987654321))
print('{0:,}'.format(987654321.98765))# 浮点数小数部分的精度
print('{0:.2f}'.format(3.1415926535))
# 如果是字符串类型则是最大的显示长度
print('{0:.5}'.format(s))# 整数类型,进制转换
a = 425
print('二进制:{0:b},十进制:{0:d},八进制:{0:o},十六进制:{0:x}'.format(a))# 浮点类型
b = 3.1415926535
print('{0:.2f},{0:.2E},{0:.2e},{0:.2%}'.format(b))