python format格式化输出填充符号不起作用_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()哪个更好用呢?

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/527659.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

h5弹框滑动 ios_微信 iOS 版更新:细节大更新,你值得拥有

在9月17日&#xff0c;IOS 微信 7.0.7 正式上线了&#xff0c;和一周前安卓 微信 7.0.7 内测版相似&#xff0c;本次的微信更新并没有新功能的上线&#xff0c;更多的是细节上的改变优化。不知道大家有没有发现&#xff0c;iOS版微信从 7.0.5直接跳过7.0.6&#xff0c;直接更新…

jpa onetoone_拥抱开源从表设计到 JPA 实现

long may the sunshine.今天的我拿起键盘就是猛敲代码。果然&#xff0c;十分钟后各种 JPA 报错开始了。跟新手党一样&#xff0c;看到一个错误就解决一个&#xff0c;没有好好思考为什么会出现这样的错误。于是乎&#xff0c;遇到一个解决一个&#xff0c;解决一个又遇到一个&…

python 数据流中的移动平均值_剑指Offer-41-数据流中的中位数

题目题目描述如何得到一个数据流中的中位数&#xff1f;如果从数据流中读出奇数个数值&#xff0c;那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值&#xff0c;那么中位数就是所有数值排序之后中间两个数的平均值。 例如&#xff0c;[2,3,4] 的中…

vue 全局键盘_如何解决ios input框唤起软键盘不灵敏问题?

为什么移动端点击事件要加300ms延迟呢&#xff1f;早在 2007 年初&#xff0c;苹果公司在发布首款 iPhone 前夕&#xff0c;遇到一个问题&#xff1a;当时的网站都是为大屏幕设备所设计的。于是苹果的工程师们做了一些约定&#xff0c;应对 iPhone 这种小屏幕浏览桌面端站点的问…

css一个盒子里可以装3个图片并排吗_John: CSS浮动与清除浮动属性详解(CSS float clear)...

CSS里的浮动&#xff0c;可以让元素脱离标准流&#xff0c;从左上角或右上角依次贴边排列。下面这个案例将会帮我们了解浮动的基本情况。下面这段代码块&#xff0c;外面是一个大div&#xff0c;里面包含着3个div&#xff0c;第一个左浮动&#xff0c;后两个无浮动。//style样式…

连接驱动_在jdbc中完成对于jdbc参数、jdbc变量,加载驱动,创建连接的封装

JDBC简介JDBC中文含义&#xff1a;Java数据库连接&#xff0c;英文全称&#xff1a;Java Database Connectivity。它是Java语言中用来规范访问数据库的接口&#xff0c;提供了放多接口方法&#xff0c;例如查询 、更新、插入、删除等方法。另外一点要注意的是&#xff1a;JDBC是…

tensorflow 保存训练loss_tensorflow2.0保存和加载模型 (tensorflow2.0官方教程翻译)

最新版本&#xff1a;https://www.mashangxue123.com/tensorflow/tf2-tutorials-keras-save_and_restore_models.html英文版本&#xff1a;https://tensorflow.google.cn/alpha/tutorials/keras/save_and_restore_models翻译建议PR&#xff1a;https://github.com/mashangxue/t…

layui导入模板数据_数据可视化图表 教程echarts,第一讲

1我们写web项目&#xff0c;展示数据的地方&#xff0c;可能会使用到图表。今天就讲这个玩意。本教程暂时定为 三讲&#xff1a;(随后情况&#xff0c;如果有新的研究&#xff0c;会有所更新&#xff01;)第一讲 饼图的使用第二讲 柱状图的使用第三讲 拆线图的使用此教程希望…

出发a标签_以用户标签为例,复盘B端产品的需求挖掘方法论

阅读指南受众人群&#xff1a;B端初级产品经理阅读收获&#xff1a;B端产品需求挖掘的一些技巧&#xff1b;了解用户标签/画像的一些业务知识。手上负责一个和数据方面有关的B端系统&#xff0c;在日常的产品规划当中&#xff0c;没有关于“用户标签”方面的规划&#xff0c;突…

字符ascii码值转换_没想到 Unicode 字符还能这样玩?

脚本之家你与百万开发者在一起来源 | 程序通事(ID&#xff1a;US_stocks)如若转载请联系原公众号上周的时候&#xff0c;朋友圈的直升飞机不知道为什么就火了&#xff0c;很多朋友开着各种花式飞机带着起飞。图片来自网络还没来得及了解咋回事来着&#xff0c;这个直升飞机就?…

右键菜单无响应_被流氓软件玩坏了?这两个清理工具拯救你凌乱的右键菜单。...

Hello 这里是一周进步我们写了四年近2000篇的干货文章&#xff0c;还分享了许多实用的神器工具&#xff0c;一路以来&#xff0c;感谢大家的支持与陪伴~文 / 一周进步 安哥拉如果你和我们一样&#xff0c;是一个喜欢在电脑上安装各种各样的软件的人&#xff0c;你的电脑右键菜…

python列表超出索引_python列表的切片操作允许索引超出范围

web开发的步骤前端知道是浏览器呈现的部分,相对于前端,后台你可以理解为服务器端专门处理.读取.存储数据库数据的部分. 因为网站是基于B\S架构,即浏览器---服务端架构,就程序来讲,可笼统划分为前端程序和服务器端程 ...const 指针的三种使用方式///const 指针的三种状态/ 注意:…

linux搭建mcpe服务器_Ubuntu Linux下搭建Minecraft我的世界服务器

总结一下在Ubuntu Linux下搭建Minecraft我的世界服务器的方法&#xff0c;其实非常简单直接。(1)、把当前的软件都更新到最新sudo apt-get updateMinecraft服务器需要Java支持。为了检查我们是否已经安装Java&#xff0c;我们执行下面的命令&#xff1a;java -version如果Java已…

supersocke接收不到数据_基于SuperSocket的北斗终端数据接收服务的设计与实现

基于SuperSocket的北斗终端数据接收服务的设计与实现刘朴,莫家勤*【摘要】北斗是我国自主研发的卫星导航定位系统,已经被广泛使用于各个领域,城市交通管理的核心是车辆监控,为了实现车辆的智能管理,获取车辆信息是首要任务,基于北斗二代的车载终端能够精确获取车辆信息,因此实现…

winform防止sqlserver注入_c# 防止sql注入对拼接sql脚本的各个参数处理

/// ///过滤标记/// /// 包括HTML&#xff0c;脚本&#xff0c;数据库关键字&#xff0c;特殊字符的源码/// 已经去除标记后的文字public string NoHtml(stringHtmlstring){if (Htmlstring null){return "";}else{//删除脚本Htmlstring Regex.Replace(Htmlstring, …

jsp mysql源码_jsp+servlet+mysql员工管理系统源代码下载

jspservletmysql员工管理系统项目截图注册页面登录页面添加员工编辑员工员工列表数据库建表语句/*Navicat MySQL Data TransferSource Server : localhostSource Server Version : 50509Source Host : localhost:3306Source Database : wdhdbTarget Server Type : MYSQLTarget …

mysql varchar(20)_MySQL中采用类型varchar(20)和varchar(255)对性能上的影响

MySQL建立索引时如果没有限制索引的大小&#xff0c;索引长度会默认采用的该字段的长度&#xff0c;也就是说varchar(20)和varchar(255)对应的索引长度分别为203(utf-8)(21)&#xff0c;2553(utf-8)(21)&#xff0c;其中"2"用来存储长度信息&#xff0c;“1”用来标记…

添加mysql至服务器_mysql 如何添加服务器

{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":6,"count":6}]},"card":[{"des":"云服务器 ECS(Elastic Compute Service)是一…

vs里安装了mysql吗_vs2017安装 MySQL for Visual Studio 1.2.

vs2017安装想在win7EF6 VS2017 MySQL 但是安装MySQL for Visual Studio 1.2.7 时一直安装不上去&#xff0c;如下&#xff1a;Action 9:40:05: InstallFinalize.1: Action 9:40:05: DeleteRegKeyAndExtensionsFile_VS2013.1: Action 9:40:06: DeleteRegKeyAndExtensionsFile_…

var lib mysql ib_MYSQL问题解决

1、MySQL错误日志里出现&#xff1a;140331 10:08:18 [ERROR] Error reading master configuration140331 10:08:18 [ERROR] Failed to initialize the master info structure140331 10:08:18 [Note] Event Scheduler: Loaded 0 events从错误提示就可以看出和mster info相关&am…