python中有以下几种方法可以格式化字符串
方式一:C风格%操作符
这种方法偏C语言风格,C语言中的printf
选项都可以当成Python的格式说明符来用,例如%s
、%x
、%f
。
# 示例代码00x00:
name = 'zhangsan'
salary = 12345.67
print("name is %s, salary is %.2f" %(name,salary))
# name is zhangsan, salary is 12345.67
这种方法也可以将元组换成字典,避免%
操作符两侧的顺序不匹配的问题。
# 示例代码00x01:
print("name is %(name)s, salary is %(salary).2f" %{'name':name, 'salary':salary})
# name is zhangsan, salary is 12345.67
方式二:内置的format函数与str类的format方法
python3添加了高级字符串格式化机制,其表达能力比C风格要强一些,且不需要使用%
操作符。
在传给format
函数的格式里,逗号表示显示千位分隔符,^
表示居中对齐。
# 示例代码01x00:
print("name is "+ format(name,'^20s') + ", salary is " + format(salary,'^20,.2f'))
# name is zhangsan , salary is 12,345.67
也可以在{}
内写冒号,把格式化说明符写在冒号右边。
# 示例代码01x01:
print("name is {:<10}, salary is {:^20.2f}".format(name,salary))
# name is zhangsan , salary is 12345.67
调用str.format
方法的时候,也可以给str
的{}
里面写上数字,用来指代format
方法在这个位置所接收到的参数值位置索引。
方式三:插值格式字符串
PYthon3.6添加了一种新的特性,叫做插值格式字符串,即f-string
。新语法特性要求在格式字符串的前面加上字母f
作为前缀。编写和阅读都更简洁一些。
# 示例代码02x00:
print(f"name is {name}, salary is {salary}")
print(f"name is {name:^10}, salary is {salary:^13.2f}")
# name is zhangsan, salary is 12345.67
# name is zhangsan , salary is 12345.67