目录
基本格式化输出
整数输出
浮点数输出
字符串输出
多个变量
通过format()输出
填充方法
%o:八进制 %d:十进制 %x:十六进制
num = 1234
print("%o" % num)
print("%d" % num)
print("%x" % num)
num = 3.1415926
print('%f' % num) #默认保留6位小数
# 3.141593
print('%.1f' % num) #取1位小数
# 3.1
print('%e' % num) #默认6位小数,用科学计数法
# 3.141593e+00
print('%g' % num)#默认6位有效数字
# 3.14159
print('%.5g' % num)#取5位有效数字
# 3.1416
print('%.2g' % num)#取2位有效数字,自动转换为科学计数法
# 3.1
print('%s' % 'hello world') # 字符串输出
hello world
print('%20s' % 'hello world') # 右对齐(20位)
hello world
print('%-20s' % 'hello world') # 左对齐(20位)
hello world
print('%.2s' % 'hello world') # 2位
he
print('%10.2s' % 'hello world') # 右对齐(10位),取2位字符
he
print('%-10.2s' % 'hello world') # 左对齐(10位),取2位字符
he
print("Hex = %x Dec = %d Oct=%o" % (num, num, num))
# Hex = 4d2 Dec = 1234 Oct=2322
format() 是python中的一个格式化输出的方法,作用上近于% ,使用上有很多它自身的优点:
1. 不需要关注数据类型的问题,(在%方法中%s只能替代字符串类型)。
2. 单个参数可以多次输出,参数顺序可以不相同。
3. 填充方式十分灵活,对齐方式十分强大。
4. 使用大括号‘{}’代替‘%’
1. 通过位置填充
print('{} {}'.format('hello', 'world'))
# hello world
print('{0} {1}'.format('hello', 'world'))
# hello world
print("{1} {1}".format('hello', 'world'))
# world world
print('{0} {1} {0}'.format('hello', 'world'))
# hello world hello
print('{a} {b} {a}'.format(b='hello', a='world'))
# world hello world
print('X: {0} Y:{2}'.format(*'abc')) # *'abc' = 'a', 'b', 'c'
# X:a Y:c
编号可写也可不写,不写编号时要保证{}的个数与字符串或字符的数目相同,以免发生错误。
2. 通过字典填充
names = ['Sarah', 'John']
print('hello {names[0]} my name is {names[1]}'.format(names=names))
# hello Sarah my name is John
3. 通过名称填充
print('name: {names}, age: {ages}'.format(names='Sarah', ages='18'))
# name: Sarah, age: 18
4. 通过key匹配
names = ['Sarah', 'John']
print('hello {0[0]} my name is {0[1]}'.format(names))
# hello Sarah my name is John
5. 通过对象的属性
class Names:
name1 = 'Sarah'
name2 = 'John'
print('hello {names.name1} my name is {names.name2}'.format(names=Names))
# hello Sarah my name is John
6. 通过魔法参数 * **
args=['ming']
kwargs = {'name1': 'xiao', "name2": 'John'}
print('hello {name1} {} my name is {name2}'.format(*args, **kwargs))
# hello xiao ming my name is John
6. 其他用法
mess = "{0} {1}".format("hello", "world")
print(mess)
# hello world
a = "hello"
b = "world"
print(f"{a} {b}")
# hello world
name = 'jack'
age = 18
print(f'my name is {name.capitalize()}.')
# my name is Jack
print(f'I am {age:*^10} years old.')
# I am ****18**** years old
加上f 用来格式转换
7. 格式化
from datetime import datetime
now = datetime.now()
print('{:%Y-%m-%d %X]}'.format(now))
# 2022-01-30 13:08:24
print('hello {0:>{1}} '.format('tom', 20))
# hello tom
print('{!s}'.format('2'))
# 2
print('{!r}'.format('2'))
# '2'
# !后面加s r a 分别对应str() repr() ascii()