python常用格式化输出

  • format格式化输出
  • format占位符格式化输出
  • format输出格式转化
  • format另一种用法
  • 整数、浮点数、字符串格式化输出
  • 整数格式化输出
  • 浮点数格式化输出
  • 字符串格式化输出
  • print、sys.stdout.write函数



python开发实现常用的格式化输出:format函数、%d、%f、%s格式化输出

format格式化输出

format占位符格式化输出

将字符串作为模板,传入参数进行格式化,共分为3种:
1,占位符不使用任何参数
2,占位符指定数字
3,占位符指定名称

# 占位符不使用任何参数。按顺序填充模版
f1 = 'Hello {}, Hello {}!'
print(f1.format('野三坡', '河北'))

# 占位符指定元组索引。format函数中参数为元组,0、1、2为元组索引
f2 = 'Hello {0}, Hello {1}! My hometown is {1}'
print(f2.format('小红', '野三坡', '河北'))

# 占位符指定元组索引。format函数中参数为元组,0、1、2为元组索引
f3 = 'Hello {1}, Hello {2}! My hometown is {2}'
print(f3.format('小红', '野三坡', '河北'))

# 占位符指定字典key值。format函数中参数为字典 key - value
f4 = 'Hello {name}, Hello {address}! My hometown is {hometown}'
print(f4.format(name='小红', address='野三坡', hometown='河北'))
Hello 野三坡, Hello 河北!
Hello 小红, Hello 野三坡! My hometown is 野三坡
Hello 野三坡, Hello 河北! My hometown is 河北
Hello 小红, Hello 野三坡! My hometown is 河北

占位符指定为数字,数字为参数元组中的索引。其错误信息为元组索引超出范围

f2 = 'Hello {1}, Hello {2}! My hometown is {2}'
print(f2.format('野三坡', '河北'))
Traceback (most recent call last):
  File "/Users/yxt/Desktop/MyProjects/OsTest/test.py", line 3, in <module>
    print(f2.format('野三坡', '河北'))
IndexError: tuple index out of range

占位符指定为名称,名称为参数字典中的key值。其错误信息为KeyError即字典中不存在该key值

f5 = 'Hello {name}, Hello {address}! My hometown is {hometown}'
print(f5.format(address='野三坡', hometown='河北'))
Traceback (most recent call last):
  File "/Users/yxt/Desktop/MyProjects/OsTest/test.py", line 4, in <module>
    print(f5.format(address='野三坡', hometown='河北'))
KeyError: 'name'

format输出格式转化

print('转为二进制数:{:b}'.format(5))
print('转为十进制数:{:d}'.format(20))
print('转为八进制数:{:o}'.format(20))
print('转为十六进制数:{:x}'.format(20))
print('转为百分数进制数:{:%}'.format(0.45))
print('保留2位百分数:{:.2%}'.format(0.45))
print("保留2位小数:{:.2f}".format(2))
print("保留2位小数:{:.2f}".format(2.859))
转为二进制数:101
转为十进制数:20
转为八进制数:24
转为十六进制数:14
转为百分数进制数:45.000000%
保留2位百分数:45.00%
保留2位小数:2.00
保留2位小数:2.86

format另一种用法

a = '野三坡'
b = '河北'
print(f"Hello {a}, Hello {b}")
Hello 野三坡, Hello 河北

整数、浮点数、字符串格式化输出

整数格式化输出

print('转为二进制数 %s' % bin(5))
print('转为八进制数 %o' % 20)
print('转为十进制数 %d' % 20)
print('转为十六进制数 %x' % 20)
转为二进制数 0b101
转为八进制数 24
转为十进制数 20
转为十六进制数 14

浮点数格式化输出

import math

number = 10000.11
# %f:格式化输出保留6位小数、
# %e:科学计数法保留6位小数
# %g:保留6位有效数字
print("10000.11 默认保留6位小数 %f" % number)
print("10000.11 默认保留6位小数(科学计数法) %e" % number)
print("10000.11 默认保留6位有效数字 %g" % number)
print("*" * 10)
# %.8f:格式化输出保留8位小数、
# %.8e:科学计数法保留8位小数
# %.8g:保留8位有效数字,不足8位保持原数据
print("10000.11 默认保留8位小数 %.8f" % number)
print("10000.11 默认保留8位小数(科学计数法) %.8e" % number)
print("10000.11 默认保留8位有效数字,不足8位保持原数据 %.8g" % number)
print("*" * 10)
# %.2f:格式化输出保留2位小数、
# %.2e:科学计数法保留2位小数
# %.2g:保留2位有效数字,自动转换为科学计数法,若是去除小数仍比有效数字多,则为整数
print("10000.11 默认保留2位小数 %.2f" % number)
print("10000.11 默认保留2位小数(科学计数法) %.2e" % number)
print("10000.11 默认保留2位有效数字,去除小数仍比保留的有效数字多则保持为整数 %.2g" % number)
print("*" * 10)
# 获取pi值。浮点数填充字符
print("pi值 %s" % math.pi)
print("前面填充字符,保持6位整数不足则补充字符 %06d" % math.pi)
10000.11 默认保留6位小数 10000.110000
10000.11 默认保留6位小数(科学计数法) 1.000011e+04
10000.11 默认保留6位有效数字 10000.1
**********
10000.11 默认保留8位小数 10000.11000000
10000.11 默认保留8位小数(科学计数法) 1.00001100e+04
10000.11 默认保留8位有效数字,不足8位保持原数据 10000.11
**********
10000.11 默认保留2位小数 10000.11
10000.11 默认保留2位小数(科学计数法) 1.00e+04
10000.11 默认保留2位有效数字,去除小数仍比保留的有效数字多则保持为整数 1e+04
**********
pi值 3.141592653589793
前面填充字符,保持6位整数不足则补充字符 000003

字符串格式化输出

s = "jcodeer"

# 保留字符
print("%s" % s)
# 保留3位字符
print("%.3s" % s)
# 保留5位字符
print("%.*s" % (5, s))
print("*" * 10)
# 右对齐,取20位,不够则补位
print('%20s' % 'hello world')
# 左对齐,取20位,不够则补位
print('%-20s' % 'hello world')
print("*" * 10)
# 左对齐,取2位
print('%-10.2s' % 'hello world')
# 右对齐,取2位
print('%10.2s' % 'hello world')
jcodeer
jco
jcode
**********
         hello world
hello world         
**********
he        
        he

print、sys.stdout.write函数

import sys

# print函数,自动换行
for i in range(5):
    print(i)
print("*" * 10)

# sys.stdout.write(string),不换行输出
for i in range(5):
    sys.stdout.write(str(i))
0
1
2
3
4
**********
01234