Python格式化字符串(格式化输出)

Python 提供了“%”对各种类型的数据进行格式化输出,例如如下代码:

price = 108
print ("the book's price is %s" % price)

上面程序中的 print 函数包含以下三个部分,第一部分是格式化字符串(相当于字符串模板),该格式化字符串中包含一个“%s”占位符,它会被第三部分的变量或表达式的值代替;第二部分固定使用“%”作为分隔符。

格式化字符串中的“%s”被称为转换说明符(Conversion Specifier),其作用相当于一个占位符,它会被后面的变量或表达式的值代替。“%s”指定将变量或值使用 str() 函数转换为字符串。

如果格式化字符串中包含多个“%s”占位符,第三部分也应该对应地提供多个变量,并且使用圆括号将这些变量括起来。例如如下代码:

user = "Charli"
age = 8
# 格式化字符串有两个占位符,第三部分提供2个变量
print("%s is a %s years old boy" % (user , age))

在格式化字符串中难道只能使用“%s”吗?还有其他转换说明符吗?如果只有“%s”这一种形式,Python 的格式化功能未免也太单一了。

实际上, Python 提供了如下所示的转换说明符:

转换说明符说明
%d,%i转换为带符号的十进制形式的整数
%o转换为带符号的八进制形式的整数
%x,%X转换为带符号的十六进制形式的整数
%e转化为科学计数法表示的浮点数(e 小写)
%E转化为科学计数法表示的浮点数(E 大写)
%f,%F转化为十进制形式的浮点数
%g智能选择使用 %f 或 %e 格式
%G智能选择使用 %F 或 %E 格式
%c格式化字符及其 ASCII 码
%r使用 repr() 将变量或表达式转换为字符串
%s使用 str() 将变量或表达式转换为字符串

当使用上面的转换说明符时,可指定转换后的最小宽度,例如如下代码:

num = -28
print("num is: %6i" % num)
print("num is: %6d" % num)
print("num is: %6o" % num)
print("num is: %6x" % num)
print("num is: %6X" % num)
print("num is: %6s" % num)

运行上面代码,可以看到如下输出结果:

num is:    -28
num is:    -28
num is:    -34
num is:    -1c
num is:    -1C
num is:    -28

从上面的输出结果可以看出,此时指定了字符串的最小宽度为 6,因此程序转换数值时总宽度为 6,程序自动在数值前面补充了三个空格。

在默认情况下,转换出来的字符串总是右对齐的,不够宽度时左边补充空格。Python 也允许在最小宽度之前添加一个标志来改变这种行为,Python 支持如下标志:

-:指定左对齐。

+:表示数值总要带着符号(正数带“+”,负数带“-”)。

0:表示不补充空格,而是补充 0。

例如如下代码

num2 = 30
# 最小宽度为0,左边补0
print("num2 is: %06d" % num2)
# 最小宽度为6,左边补0,总带上符号
print("num2 is: %+06d" % num2)
# 最小宽度为6,右对齐
print("num2 is: %-6d" % num2)

运行上面代码,可以看到如下输出结果:

num2 is: 000030
num2 is: +00030
num2 is: 30

对于转换浮点数,Python 还允许指定小数点后的数字位数:如果转换的是字符串,Python 允许指定转换后的字符串的字符数。这个标志被称为精度值,该精度值被放在最小宽度之后,中间用点 () 隔开。例如如下代码:

my_value = 3.001415926535
# 最小宽度为8,小数点后保留3位
print("my_value is: %8.3f" % my_value)
# 最小宽度为8,小数点后保留3位,左边补0
print("my_value is: %08.3f" % my_value)
# 最小宽度为8,小数点后保留3位,左边补0,始终带符号
print("my_value is: %+08.3f" % my_value)
the_name = "Charlie"
# 只保留3个字符
print("the name is: %.3s" % the_name) # 输出Cha
# 只保留2个字符,最小宽度10
print("the name is: %10.2s" % the_name)

运行上面代码,可以看到如下输出结果:

my_value is:    3.001
my_value is: 0003.001
my_value is: +003.001
the name is: Cha
the name is:         Ch

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

android bitmap保存本地背景是黑色的 解决方法

前言 最近在项目种有个电子签名功能 需要客户手写签名 然后保存本地 上传云端 //获取bitmapBitmap bitmapFromView mSignatureView.getBitmapFromView();BitmapUtil.saveImageToGallery(this, bitmapFromView);压缩为JPEG格式 saveImageToGallery 方法我做了修改 之前用的Bit…

外贸获客怎么做?有哪些技巧?

外贸获客是许多企业拓展海外市场的关键一环,为了成功地吸引潜在客户,我们需要了解一些基本的获客技巧,本文将分享一些实用的方法和技巧,帮助您在外贸领域获得更多的客户。 一、了解目标客户 在开展外贸业务之前,了解…

java--LinkedList集合的底层原理

1.什么是链表?有啥特点? ①链表中的结点是独立的对象,在内存中是不连续的,每个结点包含数据值和下一个结点的地址。 ②链表的特点1:查询慢,无论查询那个数据都要从头开始找。 ③链表的特点2:链…

LabVIEW使用单板RIO开发远程监控电源信号

LabVIEW使用单板RIO开发远程监控电源信号 设计和构建用于智能电网的本地功耗分析系统,主要服务于领先的电力监控设备设计者和制造商。随着智能电网投资的增加,对于能够有效处理替代电源(如太阳能和风能)间歇性功率水平的技术需求…

Ubuntu系统使用快速入门实践(七)——软件安装与使用(5)

Ubuntu系统使用快速入门实践系列文章 下面是Ubuntu系统使用系列文章的总链接,本人发表这个系列的文章链接均收录于此 Ubuntu系统使用快速入门实践系列文章总链接 下面是专栏地址: Ubuntu系统使用快速入门实践系列文章专栏 文章目录 Ubuntu系统使用快速…

可以组成网络的服务器 - 华为OD统一考试(C卷)

OD统一考试(C卷) 分值: 200分 题解: Java / Python / C 题目描述 在一个机房中,服务器的位置标识在n*m的整数矩阵网格中,1表示单元格上有服务器,0表示没有。如果两台服务器位于同一行或者同一列…

docker 安装mysql 主从复制

一、搭建主服务器的mysql 1.1 先新建文件夹 mkdir -p /data/dockerData/mysql-master/conf 1.2 进入/data/dockerData/mysql-master/conf目录下新建my.config, [mysqld] ## 设置server_id,同一局域网中需要唯一 server_id101 ## 指定不需要同步的数据库名称 bin…

springboot房屋房产房管家中介服务系统+java-ssm

随着房地产市场的快速发展,中国经济飞速发展,社会城市化建设的脚步不断加快,社会城市化的规模也在不断扩大,房屋中介逐渐成为当今社会生活的重要部分,房屋中介的市场竞争也日益加剧,房屋中介的管理与服务成…

redis数据淘汰策略:

面试官:了解redis数据淘汰策略吗? 就是当Redis内存使用达到设置的上限时, 此时需要使用redis数据淘汰机制来进行数据淘汰。(有针对key的 和 针对value数据的) Redis支持8种不同策略来选择要删除的key: n…

CTF比赛中web安全题型讲解

在CTF(Capture The Flag)竞赛中,Web安全题目是测试参赛者对Web应用漏洞利用和防御能力的重要环节。以下是30道Web类题型及其标准答案,对初次打比赛的网安人员来说,还是有一些帮助的,喜欢可以收藏。 题目及…

PDI/Kettle-9.4.0.0-343源码下载及编译

目录 🍑一、概要🍊最新版本10.x(2023-11-30) 🍑二、下载🍑三、编译🍊3.1、导入开发工具🍊3.2、开始编译🍊3.3、编译报错🍊3.4、报错原因:jdk版本低…

【AI底层逻辑】——数学与机器学习:优雅的智慧之舞

目录 “宝藏网站” 聊聊数学 “华尔兹” “智慧之舞” 后续的章节我们将迎来新的篇章,新的切入点探索AI的奥秘,通过揭示高数、矩阵、概率论等数学知识与机器学习的关系来深入理解AI的奥秘! “宝藏网站” 开头先给大家上几个宝藏网站&am…

对于版面识别的一个疑问

paddleocr识别出来的rigion是无序的,我用augument-xy-cut对bbox排序之后。 下一步就是对自然段进行划分,即res字段里面的text_region进行merge_para,不过这时我产生了一个疑问,既然有merge_para了,前面对bbox的排序有必…

Threejs发光闪烁提示特效

一、导语 发光闪烁特效应该在我们的项目中是经常需要去封装的一个特效吧,一般用于点击选择,选中物体,或者一些特效加持于中心物体,物体碰撞检测后的发光特效等等 二、分析 我们可以合理的使用后处理特效,上步骤&am…

SpringTask

SpringTask是一种用于定时任务调度的框架周期性任务、定时任务需要SpringTask框架 比较出名的框架有三种: (1)SpringTask(没有很大的并发量需求量,用SpringTask足够) (2)Quartz(老牌的定时任务&#xff0c…

如何更改Jupyter Notebook中的环境?

1.首先,打开终端 2.接着,分别输入以下命令 conda env list 把EXPose替换为自己的环境变量 conda activate EXPose 3.接下来安装‘ ipykernel ’软件包 conda install ipykernel 4. 将该环境添加到Jupyter Notebook中;在Jupyter Notebook…

AICore 带来了 Android 专属的 AI 能力,它要解决什么?采用什么架构思路?

前言 Google 最近发布的 Gemini 模型在全球引起了巨大反响,其在多模态领域的 Video demo 无比震撼。对于 Android 开发者而言,其中最振奋人心的消息莫过于 Gemini Nano 模型将内置到 Android 系统当中,并开放给开发者使用。 事实上&#xf…

漏洞复现-华为Auth-HTTP服务器任意文件读取漏洞(附漏洞检测脚本)

免责声明 文章中涉及的漏洞均已修复,敏感信息均已做打码处理,文章仅做经验分享用途,切勿当真,未授权的攻击属于非法行为!文章中敏感信息均已做多层打马处理。传播、利用本文章所提供的信息而造成的任何直接或者间接的…

SL9008 3.6-60V输入 LED降压恒流芯片 内置MOS管 带PWM调光

SL9008是一款内置MOS管、具有PWM调光功能的LED降压恒流芯片,适用于3.6-60V的输入电压范围。它采用了先进的电路设计,确保了高效率和长寿命,同时具有宽电压输入范围和优异的负载调整率。 SL9008的主要特点包括: 1. 宽输入电压范围&…

STM32单片机项目实例:基于TouchGFX的智能手表设计(2)UI交互逻辑的设计

STM32单片机项目实例:基于TouchGFX的智能手表设计(2)UI交互逻辑的设计 目录 一、UI交互逻辑的设计 1.1 硬件平台的资源 1.2 界面切换功能 ​​​​​​​1.3 表盘界面 1.4 运动界面 ​​​​​​​1.6 设置界面 ​​​​​​​1.7 应…