Python格式化输出——format用法示例

format OR %

提到Python中的格式化输出方法,一般来说有以下两种方式:

print('hello %s' % 'world')
# hello world
print('hello {}'.format('world'))
# hello world

到底哪种好呢,反正对我来说,用了.format()之后就再也不想用%了。

  • format()不用理会数据类型,%s%f等等我记不完;
  • format()功能更丰富,填充方式,对齐方式都很灵活,让你的打印效果更美观;
  • format()是官方推荐的,%指不定就在未来版本中给废弃掉了。

    基本用法

print('{} {}'.format('hello', 'world'))  # 最基本的

print('{0} {1}'.format('hello', 'world'))  # 通过位置参数

print('{0} {1} {0}'.format('hello', 'world'))  # 单个参数多次输出

"""输出结果
hello world
hello world
hello world hello
"""

关键词定位

# 通过关键词参数
print('我的名字是{name},我今年{age}岁了。'.format(name='小明', age='12'))

# 与位置参数一样,单个参数也能多次输出
print('{name}说:"我的名字是{name},我今年{age}岁了。"'.format(name='小明', age='12'))

"""输出结果
我的名字是小明,我今年12岁了。
小明说:"我的名字是小明,我今年12岁了。"
"""

可变参数

既然format()是一个方法,那是不是也接受*args**kwargs形式的传参呢,答案是肯定的。

# 传入list
data = ['hello', 'world']
print('{0} {1}'.format(*data))

# 传入dict
data = {'name': '小明', 'age': 12}
print('我的名字是{name},我今年{age}岁了。'.format(**data))

# 混用
data_1 = ['hello', 'world']
data_2 = {'name': '小明', 'age': 12}
print('{0} {1} 我的名字是{name},我今年{age}岁了,{0}!'.format(*data_1, **data_2))

"""输出结果
hello world
我的名字是小明,我今年12岁了。
hello world 我的名字是小明,我今年12岁了,hello!
"""

固定宽度

format()可以指定输出宽度为多少,当字符串长度少于设定值的时候,默认用空格填充:

data = [{'name': 'Mary', 'college': 'Tsinghua University'},
        {'name': 'Micheal', 'college': 'Harvard University'},
        {'name': 'James', 'college': 'Massachusetts Institute of Technology'}]
# 固定宽度输出
for item in data:
    print('{:10}{:40}'.format(item['name'], item['college']))

"""输出结果
Mary      Tsinghua University
Micheal   Harvard University
James     Massachusetts Institute of Technology   

当然除了空格,我们也可以选择其他字符来填充,譬如我想打印一条分割线,便可以选择通过-来填充:

data = [{'name': 'Mary', 'college': 'Tsinghua University'},
        {'name': 'Micheal', 'college': 'Harvard University'},
        {'name': 'James', 'college': 'Massachusetts Institute of Technology'}]

# 固定宽度输出
for item in data:
    # 每输出一条记录之前打印一条分割线
    # 选择用其他字符来填充时需要指定对齐方式
    print('{:-^60}'.format('我是分割线'))
    print('{:10}{:40}'.format(item['name'], item['college']))

"""输出结果
---------------------------我是分割线----------------------------
Mary      Tsinghua University
---------------------------我是分割线----------------------------
Micheal   Harvard University
---------------------------我是分割线----------------------------
James     Massachusetts Institute of Technology
"""

对齐方式

format()支持左对齐,右对齐,居中,分别对应<>^,具体怎么使用我们看实例:

data = [{'name': 'Mary', 'college': 'Tsinghua University'},
        {'name': 'Micheal', 'college': 'Harvard University'},
        {'name': 'James', 'college': 'Massachusetts Institute of Technology'}]

print('{:-^50}'.format('居中'))
for item in data:
    print('{:^10}{:^40}'.format(item['name'], item['college']))

print('{:-^50}'.format('左对齐'))
for item in data:
    print('{:<10}{:<40}'.format(item['name'], item['college']))

print('{:-^50}'.format('右对齐'))
for item in data:
    print('{:>10}{:>40}'.format(item['name'], item['college']))

"""输出结果
------------------------居中------------------------
   Mary             Tsinghua University
 Micheal             Harvard University
  James    Massachusetts Institute of Technology
-----------------------左对齐------------------------
Mary      Tsinghua University
Micheal   Harvard University
James     Massachusetts Institute of Technology
-----------------------右对齐------------------------
      Mary                     Tsinghua University
   Micheal                      Harvard University
     James   Massachusetts Institute of Technology
"""

数字格式化

常用的示例如下:

# 取小数点后两位
num = 3.1415926
print('小数点后两位:{:.2f}'.format(num))

# 带+/-输出
num = -3.1415926
print('带正/负符号:{:+.2f}'.format(num))

# 转为百分比
num = 0.34534
print('百分比:{:.2%}'.format(num))

# 科学计数法
num = 12305800000
print('科学计数法:{:.2e}'.format(num))

# ,分隔
num = 12305800000
print('","分隔:{:,}'.format(num))

# 转为二进制
num = 15
print('二进制:{:b}'.format(num))

# 十六进制
num = 15
print('十六进制:{:x}'.format(num))

# 八进制
num = 15
print('八进制:{:o}'.format(num))

"""输出结果
小数点后两位:3.14
带正/负符号:-3.14
百分比:34.53%
科学计数法:1.23e+10
","分隔:12,305,800,000
二进制:1111
十六进制:f
八进制:17
"""

输出花括号

当然,如果我们想输出的{}的时候怎么办呢?

# 输出花括号
print('我是{{{}}}'.format('Awesome_Tang'))

"""输出结果
我是{Awesome_Tang}
"""

花式玩法

其实结合以上这些特性,我们可以来点好玩点,譬如说自己写一个进度条:

import time

length = 1000
for i in range(1, length + 1):
    percent = i / length
    bar = '▉' * int(i // (length / 50))
    time.sleep(0.01)
    print('\r进度条:|{:<50}|{:>7.1%}'.format(bar, percent), end='')
print('\n')
  • 效果如下:

    ***

现在你觉得%str.format()哪个更好用呢?

原文地址:https://www.cnblogs.com/awesometang/p/12005740.html

时间: 2024-07-28 12:52:15

Python格式化输出——format用法示例的相关文章

Python格式化输出字符串 (%, format(), f&#39;&#39;)

格式说明符/占位符:% 目的:格式与内容分离,制作复杂的公共字符串模板,让某些位置变成动态可输入的. 用法:' %[datatype]  '  % (data, data, ...) %前设置输出格式,用引号括起来:%后设置输出内容,格式部分有几个%,内容部分就有几个数据,多个数据时用小括号括起来,并用逗号分隔. 需要输出%时,可以用%%转义,就取消了占位符的作用 print('3%%%s' % 'gg') 结果: 3%gg 整型 %o 八进制 ,%d  (或%i)十进制,%x 十六进制 pri

07 python 数字的格式化输出 format(重要)

第七课 数字的格式化输出 format ***** 重点 什么叫数字的格式化呢?我们看一个例子:12.4367 ---> 12.4(保留小数点后1位) ---> 12.44 // 保留小数点后1位 这个就叫做 数字的格式化输出 format函数是用来进行数字可视化,有两个参数参数1:要格式化的数字参数2:格式化字符串 例子 x = 1234.56789 # 保留小数点后2位输出 1234.57 # coding:utf-8 x = 1234.56789 # 保留小数点后2位输出 1234.57

Python格式化输出

python 格式化输出细节,以备忘 转载自: http://www.cnblogs.com/plwang1990/p/3757549.html 1. 打印字符串 print ("His name is %s" % ("David")) 2.打印整数 print ("He is %d years old" % (25)) 3.打印浮点数 print ("His height is %f m" % (1.83)) 4.打印浮点数

python格式化输出及大量案例

python格式化输出符号及大量案例 1.格式化输出符号 python格式化输出符号 格式化符号 含义 %c 转化成字符 %r 优先使用repr()函数进行字符串转化 %s 转换成字符串,优先使用str() %d或%i 转化成有符号十进制 %u 转化成无符号十进制 %o 转化成无符号八进制数 %x或%X 转化成无符号十六进制数,x或X代表转化后以小写或者大写形式输出 %e或%E 转化成科学计数法,e或E代表以小写或者大写形式输出 %f或%F 转化成浮点数 %g或%G %e和%f 或 %E和%F的

python——格式化输出、占位符、format()

占位符 常用占位符 描述 %s 字符串 %d 十进制整数 %o 八进制 %x 十六进制 %f 浮点数 >>> print('%s' % 'hello world') # 字符串输出 hello world >>> print('%20s' % 'hello world') # 右对齐,取20位,不够则补位 hello world >>> print('%-20s' % 'hello world') # 左对齐,取20位,不够则补位 hello worl

【Rollo的Python之路】Python:格式化输出:%与format

%用法: 1.0 整数的输出 %o —— oct 八进制%d —— dec 十进制%x —— hex 十六进制 >>> print('%o' % 20) 24 >>> print('%d' % 20) 20 >>> print('%x' % 20) 14 2.0 浮点数输出 %f 3.0 字符串输出 %d >>> print('%s' % 'hello world') # 字符串输出 hello world print("%

[转]Python格式化输出

今天写程序又记不清格式化输出细节了……= =索性整理一下. python print格式化输出. 1. 打印字符串 print ("His name is %s"%("Aviad")) 效果: 2.打印整数 print ("He is %d years old"%(25)) 效果: 3.打印浮点数 print ("His height is %f m"%(1.83)) 效果: 4.打印浮点数(指定保留小数点位数) print

大话Python格式化输出字符串

1."{},{}".format(,)用法总结: '{0},{1}'.format('var1',132908) 'var1,132908' '{},{}'.format('var1',132908) 'var1,132908 '{0},{1},{1},{0}'.format('var1',132908) 'var1,132908,132908,var1' 2.关键字参数: '{name},{age}'.format(age=18,name='wangchao') 'wangchao,

Python格式化输出和深浅复制

字符串的四种拼接方法,常用格式化 deepcopy(深复制) bytes 和 bytearray 的基本用法 字符串拼接 使用 + 格式化字符串 使用join 用单引号内的字符来拼接,参数填一个整体 使用format ,占位符:{} 字符串格式化输出 % 规定了对应位置的值只能填对应的类型 %s    %字符串 %d    %数字(十进制) %f    %浮点数 %s 与 %r 的区别,一个输出带引号,一个输出不带引号 其它了解即可 %c    %ASCII字符 %o    转换成8进制 %x