3.9 Python格式化字符串
Python格式化字符串(格式化输出)
我们之前讲到过 print() 函数的用法,这只是最简单最初级的形式,print() 还有很多高级的玩法,比如格式化输出,这就是本节要讲解的内容。
熟悉C语言 printf() 函数的读者能够轻而易举学会 Python print() 函数,它们是非常类似的。
print() 函数使用以%开头的转换说明符对各种类型的数据进行格式化输出,具体请看下表。
| 转换说明符 | 解释 |
|---|---|
| %d、%i | 转换为带符号的十进制整数 |
| %o | 转换为带符号的八进制整数 |
| %x、%X | 转换为带符号的十六进制整数 |
| %e | 转化为科学计数法表示的浮点数(e 小写) |
| %E | 转化为科学计数法表示的浮点数(E 大写) |
| %f、%F | 转化为十进制浮点数 |
| %g | 智能选择使用 %f 或 %e 格式 |
| %G | 智能选择使用 %F 或 %E 格式 |
| %c | 格式化字符及其 ASCII 码 |
| %r | 使用 repr() 函数将表达式转换为字符串 |
| %s | 使用 str() 函数将表达式转换为字符串 |
转换说明符(Conversion Specifier)只是一个占位符,它会被后面表达式(变量、常量、数字、字符串、加减乘除等各种形式)的值代替。
【实例】输出一个整数:
age = 8
print("C语言中文网已经%d岁了!" % age)
运行结果:
C语言中文网已经8岁了!
在 print() 函数中,由引号包围的是格式化字符串,它相当于一个字符串模板,可以放置一些转换说明符(占位符)。本例的格式化字符串中包含一个%d说明符,它最终会被后面的 age 变量的值所替代。
中间的%是一个分隔符,它前面是格式化字符串,后面是要输出的表达式。
当然,格式化字符串中也可以包含多个转换说明符,这个时候也得提供多个表达式,用以替换对应的转换说明符;多个表达式必须使用小括号( )包围起来。请看下面的例子:
name = "C语言中文网"
age = 8
url = "http://c.biancheng.net/"
print("%s已经%d岁了,它的网址是%s。" % (name, age, url))
运行结果:
C语言中文网已经8岁了,它的网址是http://c.biancheng.net/。
总之,有几个占位符,后面就得跟着几个表达式。
指定最小输出宽度
当使用表1中的转换说明符时,可以使用下面的格式指定最小输出宽度(至少占用多少个字符的位置):
- %10d 表示输出的整数宽度至少为 10;
- %20s 表示输出的字符串宽度至少为 20。
请看下面的演示:
n = 1234567
print("n(10):%10d." % n)
print("n(5):%5d." % n)
url = "http://c.biancheng.net/python/"
print("url(35):%35s." % url)
print("url(20):%20s." % url)
运行结果:
n(10): 1234567.
n(5):1234567.
url(35): http://c.biancheng.net/python/.
url(20):http://c.biancheng.net/python/.
从运行结果可以发现,对于整数和字符串,当数据的实际宽度小于指定宽度时,会在左侧以空格补齐;当数据的实际宽度大于指定宽度时,会按照数据的实际宽度输出。
你看,这里指定的只是最小宽度,当数据的实际宽度足够时,指定的宽度就没有实际意义了。
指定对齐方式
默认情况下,print() 输出的数据总是右对齐的。也就是说,当数据不够宽时,数据总是靠右边输出,而在左边补充空格以达到指定的宽度。Python 允许在最小宽度之前增加一个标志来改变对齐方式,Python 支持的标志如下:
| 标志 | 说明 |
|---|---|
| - | 指定左对齐 |
| + | 表示输出的数字总要带着符号;正数带+,负数带-。 |
| 0 | 表示宽度不足时补充 0,而不是补充空格。 |
几点说明:
- 对于整数,指定左对齐时,在右边补 0 是没有效果的,因为这样会改变整数的值。
- 对于小数,以上三个标志可以同时存在。
- 对于字符串,只能使用
-标志,因为符号对于字符串没有意义,而补 0 会改变字符串的值。
请看下面的代码:
n = 123456
# %09d 表示最小宽度为9,左边补0
print("n(09):%09d" % n)
# %+9d 表示最小宽度为9,带上符号
print("n(+9):%+9d" % n)
f = 140.5
# %-+010f 表示最小宽度为10,左对齐,带上符号
print("f(-+0):%-+010f" % f)
s = "Hello"
# %-10s 表示最小宽度为10,左对齐
print("s(-10):%-10s." % s)
运行结果:
n(09):000123456
n(+9): +123456
f(-+0):+140.500000
s(-10):Hello .
指定小数精度
对于小数(浮点数),print() 还允许指定小数点后的数字位数,也即指定小数的输出精度。
精度值需要放在最小宽度之后,中间用点号.隔开;也可以不写最小宽度,只写精度。具体格式如下:
%m.nf
%.nf
m 表示最小宽度,n 表示输出精度,.是必须存在的。
请看下面的代码:
f = 3.141592653
# 最小宽度为8,小数点后保留3位
print("%8.3f" % f)
# 最小宽度为8,小数点后保留3位,左边补0
print("%08.3f" % f)
# 最小宽度为8,小数点后保留3位,左边补0,带符号
print("%+08.3f" % f)
运行结果:
3.142
0003.142
+003.142
相关文章:
3.9 Python格式化字符串
Python格式化字符串(格式化输出) 我们之前讲到过 print() 函数的用法,这只是最简单最初级的形式,print() 还有很多高级的玩法,比如格式化输出,这就是本节要讲解的内容。 熟悉C语言 printf() 函数的读者能够…...
Linux驱动学习:从Linux主机nfs共享文件到uboot
第一步:在Linux主机上开启NFS服务,使用如下命令安装NFS服务: sudo apt-get install nfs-kernel-server rpcbind 第二步:创建一个文件夹用于共享,直接以nfs命名就行: 第三步:打开nfs服务配置文…...
Linux下场景模拟--cpu、内存打满测试
Linux下场景模拟–cpu、内存打满测试 打满CPU占用 编写脚本vi /root/cpu_run_full.sh vi /root/cpu_run_full.sh填写如下内容: #!/bin/bash function while_run_cpu() {while true;doi2;done }function cpu_full() {for ((i0; i<$1; i));dowhile_run_cpu &am…...
Vue中watch与计算属性computed
最近,写vue代码,判断父组件传来的type来作为条件判断,并用v-if v-else来控制页面展示。 起初用watch监听了type,发现值改变了,但是写在data配置项的visible属性书写错误,未实现响应式,如下&…...
nginx部署前端教程
目录 一、前言二、部署三、注意四、参考 一、前言 一般来说现在的软件项目,都是分用户端以及管理端的,并且是前后端分离的,这里我来记录一下部署两个前端的教程。 部署前端之前需要的准备工作是部署springBoot后端程序,这里我do…...
设计模式:工厂模式
定义 工厂模式(Factory Pattern),特别是工厂方法模式(Factory Method Pattern),是一种创建型设计模式,它定义了一个创建对象的接口,但将实例化的类推迟到子类中进行。这样ÿ…...
系统监测工具-tcpdump的使用
一个简单的tcpdump抓包过程。主要抓包观察三次握手,四次挥手的数据包 有两个程序:客户端和服务器两个程序 服务器端的ip地址使用的是回环地址127.0.0.1 端口号使用的是6000 tcpdump -i 指定用哪个网卡等,dstip地址端口指定抓取目的地址…...
Java智慧校园系统源码 微信小程序+电子班牌
Java智慧校园系统源码 微信小程序电子班牌 通过设备管理对百纳智慧校园的智慧班牌以及百纳智慧屏(校牌)进行统一集中式管理,支持浏览所有设备的基本信息以及在离线状态,支持添加设备、设备一键开关机、一键重启、设置节假日开关机…...
OpenAI Sora:浅析文生视频模型Sora以及技术原理简介
一、Sora是什么? Sora官方链接:https://openai.com/sora 视频模型领头羊Runway Gen 2、Pika等AI视频工具,都还在突破几秒内的连贯性,而OpenAI,已经达到了史诗级的纪录。 OpenAI,永远快别人一步࿰…...
canal部署
定义 canal组件是一个基于mysql数据库增量日志解析,提供增量数据订阅和消费,支持将增量数据投递到下游消费者(kafka,rocketmq等)或者存储(elasticearch,hbase等)canal感知到mysql数据变动&…...
001集——在线网络学习快速完成——16倍速度
在线网络学习快进方法如下: 电脑下载 Microsoft edge 浏览器,有的电脑是自带的 1、点击右上角… 2、点击"扩展" 3、点击"管理扩展" 4、点击"获取 Microsoft edge 扩展" 5、搜索框里搜" global " 6、获取"…...
golang web 开发 —— gin 框架 (gorm 链接 mysql)
目录 1. 介绍 2. 环境 3. gin 3.1 gin提供的常见路由 3.2 gin的分组 main.go router.go 代码结构 3.3 gin 提供的Json方法 main.go route.go common.go user.go order.go 3.4 gin框架下如何获取传递来的参数 第一种是GET请求后面直接 /拼上传递的参数 第二种是…...
区块链相关概念
区块链是什么,就算是做计算机技术开发的程序员,100个当中都没有几个能把这个概念理解明白,更不要说讲清楚了。那对于普通人来说,就更扯了。 除了“挖矿”表面意思似乎比较好理解外,其他的基础概念真TMD绕。 去中心化、…...
文章解读与仿真程序复现思路——电力系统自动化EI\CSCD\北大核心《考虑灵活爬坡产品的虚拟电厂两阶段分布鲁棒优化运营策略》
本专栏栏目提供文章与程序复现思路,具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源…...
2.k8s架构
目录 k8s集群架构 控制平面 kube-apiserver kube-scheduler etcd kube-controller-manager node 组件 kubelet kube-proxy 容器运行时(Container Runtime) cloud-controller-manager 相关概念 k8s集群架构 一个Kubernetes集群至少包含一个控制…...
xss.pwnfunction-Ligma
首先用jsFuckhttps://jsfuck.com/ [][(![][])[[]](![][])[![]![]](![][])[![]](!![][])[[]]][([][(![][])[[]](![][])[![]![]](![][])[![]](!![][])[[]]][])[![]![]![]](!![][][(![][])[[]](![][])[![]![]](![][])[![]](!![][])[[]]])[![][[]]]([][[]][])[![]](![][])[![]![]!…...
分布式限流——Redis实现令牌桶算法
令牌桶算法 令牌桶算法(Token Bucket Algorithm)是一种广泛使用的流量控制(流量整形)和速率限制算法。这个算法能够控制网络数据的传输速率,确保数据传输的平滑性,防止网络拥堵,同时也被应用于…...
鸿蒙原生应用已超4000个!
鸿蒙原生应用已超4000个! 来自 HarmonyOS 微博近期消息,#鸿蒙千帆起# 重大里程碑!目前已有超4000个应用加入鸿蒙生态。从今年1月18日华为宣布首批200多家应用厂商正在加速开发鸿蒙原生应用,到3月底超4000个应用,短短…...
manga-ocr漫画日文ocr
github 下载 解压 anaconda新建环境 conda create -n manga_ocr python3.8 激活环境 conda activate manga_ocr cd到解压目录 cd /d manga-ocr-master 安装依赖包 pip install -r requirements.txt pip3 install manga-ocr 下载离线model huggingface 123云盘 解压到一个目录…...
STL、Vector和Set的讲解和例题分析
STL STL(Standard Template Library,标准模板库)是C标准库的一部分,它提供了一系列通用的编程组件,包括容器、迭代器、算法和函数对象等。STL是C中实现泛型编程的核心,它允许程序员使用模板编写与数…...
企业无线网络进阶:FreeRadius服务器配置与TLS证书实战
1. 为什么企业无线网络需要FreeRadius与TLS证书 想象一下你公司的Wi-Fi像是一个没有门禁的公共广场,任何人都能随意进出。这种情况对于企业网络来说简直是灾难——数据泄露、带宽被占、内网渗透风险接踵而至。而FreeRadiusTLS证书的方案,就相当于给这个广…...
Token工厂:无锡部署昇腾384超节点算力集群,制造Token
AI智能体正在成为人工智能发展新范式,Token调用量暴增,拉动算力产业链资本开支迅猛加速。据央视新闻,今年3月,我国日均Token调用量超140万亿,相比2024年初增长1000多倍。AI模型使用成本水涨船高,不少从业者…...
Arm Compiler 6.16LTS功能安全认证语言扩展解析
1. Arm Compiler for Embedded FuSa 6.16LTS语言扩展支持现状解析在功能安全关键型嵌入式系统开发中,编译器工具链的认证状态直接关系到最终产品的合规性。Arm Compiler for Embedded FuSa 6.16LTS作为经过功能安全认证的工具链,其语言扩展支持情况需要开…...
NotebookLM+遥感影像分析实战:水稻倒伏预警模型搭建(含Landsat-8元数据自动标注技巧)
更多请点击: https://kaifayun.com 第一章:NotebookLM农业科学研究 NotebookLM 是 Google 推出的基于 AI 的研究协作者工具,专为知识密集型工作设计。在农业科学研究中,它能高效整合多源异构文献(如 FAO 报告、PubMed…...
LangChain实战:从零构建RAG应用与模块化开发指南
1. 项目概述:LangChain示例库的实战价值如果你最近在尝试用大语言模型(LLM)构建应用,大概率会听到“LangChain”这个名字。它就像一个乐高积木的百宝箱,把调用LLM、连接外部数据、管理对话记忆这些复杂任务,…...
从开题到终稿,9 款 AI 毕业论文工具横评:okbiye 领衔,帮你告别熬夜改稿循环
okbiye-免费查重复率aigc检测/开题报告/毕业论文/智能排版/文献综述/AI PPT毕业论文 - Okbiye智能写作https://www.okbiye.com/ai/bylw 论文季的深夜,你是不是也对着空白文档反复刷新浏览器?开题报告被导师打回三次、文献综述东拼西凑逻辑不通、终稿排版…...
Linux驱动开发实战:手把手教你为GT1151触摸屏编写I2C+Input+中断驱动(基于F1C200S)
Linux驱动开发实战:GT1151触摸屏I2CInput中断驱动全解析 1. 嵌入式Linux驱动开发概述 在嵌入式系统开发中,触摸屏作为人机交互的核心组件,其驱动开发一直是工程师必须掌握的技能。GT1151作为一款广泛应用于嵌入式设备的电容式触摸屏控制器&am…...
如何用VR-Reversal将3D VR视频高效转换为普通2D格式:完整实用指南
如何用VR-Reversal将3D VR视频高效转换为普通2D格式:完整实用指南 【免费下载链接】VR-reversal VR-Reversal - Player for conversion of 3D video to 2D with optional saving of head tracking data and rendering out of 2D copies. 项目地址: https://gitcod…...
Linux内核驱动开发:从传统proc接口到现代seq_file与proc_ops的迁移指南
1. 项目概述:为什么我们需要关注/proc的新接口?如果你在Linux内核驱动开发领域摸爬滚打过几年,一定对/proc文件系统这个“老伙计”又爱又恨。爱它,是因为在调试和状态监控时,它提供了一个极其简单、直观的窗口…...
入库篇:仓库里的货从哪来?——WMS货品来源全解析,物流新人必读
仓库里的货从哪来?——WMS货品来源全解析,物流新人必读 摘要:每天在WMS系统里看到成百上千的库存记录,但你想过没有——这些货品最初是怎么进入系统的?是采购进来的?生产出来的?客户退回来的&am…...
