python中格式化字符串的作用_python中字符串格式化的意义(化妆)

格式 描述

%%百分号标记 #就是输出一个%

%c字符及其ASCII码

%s字符串

%d有符号整数(十进制)

%u无符号整数(十进制)

%o无符号整数(八进制)

%x无符号整数(十六进制)

%X无符号整数(十六进制大写字符)

%e浮点数字(科学计数法)

%E浮点数字(科学计数法,用E代替e)

%f浮点数字(用小数点符号)

%g浮点数字(根据值的大小采用%e或%f)

%G浮点数字(类似于%g)

%p指针(用十六进制打印值的内存地址)

%n存储输出字符的数量放进参数列表的下一个变量中

%格式化符也可用于字典,可用%(name)引用字典中的元素进行格式化输出。

负号指时数字应该是左对齐的,“0”告诉Python用前导0填充数字,正号指时数字总是显示它的正负(+,-)符号,即使数字是正数也不例外。

可指定最小的字段宽度,如:"%5d" % 2。也可用句点符指定附加的精度,如:"%.3d" % 3。

e.g.

# 例:数字格式化

nYear = 2018

nMonth = 8

nDay = 18

# 格式化日期 %02d数字转成两位整型缺位填0

print '%04d-%02d-%02d'%(nYear,nMonth,nDay)

>> 2018-08-18# 输出结果

fValue = 8.123

print '%06.2f'%fValue# 保留宽度为6的2位小数浮点型

>> 008.12# 输出

print '%d'%10# 输出十进制

>> 10

print '%o'%10# 输出八进制

>> 12

print '%02x'%10# 输出两位十六进制,字母小写空缺补零

>> 0a

print '%04X'%10# 输出四位十六进制,字母大写空缺补零

>> 000A

print '%.2e'%1.2888# 以科学计数法输出浮点型保留2位小数

>> 1.29e+00

格式化操作符辅助指令

符号 作用

* 定义宽度或者小数点精度

- 用做左对齐

+ 在正数前面显示加号( + )

在正数前面显示空格

# 在八进制数前面显示零('0'),在十六进制前面显示'0x'或者'0X'(取决于

用的是'x'还是'X')

0 显示的数字前面填充‘0’而不是默认的空格

% '%%'输出一个单一的'%'

(var) 映射变量(字典参数)

m.n m 是显示的最小总宽度,n 是小数点后的位数(如果可用的话)

python字符串格式化的意思就是用format函数格式化字符串的用法。

用法:它通过{}和:来代替传统%方式。

1、使用位置参数

要点:从以下例子可以看出位置参数不受顺序约束,且可以为{},只要format里有相对应的参数值即可,参数索引从0开,传入位置参数列表可用*列表

>>> li = ['hoho',18]

>>> 'my name is {} ,age {}'.format('hoho',18)

'my name is hoho ,age 18'

>>> 'my name is {1} ,age {0}'.format(10,'hoho')

'my name is hoho ,age 10'

>>> 'my name is {1} ,age {0} {1}'.format(10,'hoho')

'my name is hoho ,age 10 hoho'

>>> 'my name is {} ,age {}'.format(*li)

'my name is hoho ,age 18'

2、使用关键字参数

要点:关键字参数值要对得上,可用字典当关键字参数传入值,字典前加**即可

>>> hash = {'name':'hoho','age':18}

>>> 'my name is {name},age is {age}'.format(name='hoho',age=19)

'my name is hoho,age is 19'

>>> 'my name is {name},age is {age}'.format(**hash)

'my name is hoho,age is 18'

3、填充与格式化

:[填充字符][对齐方式 ][宽度]

1

2

3

4

5

6

>>> '{0:*>10}'.format(10) ##右对齐

'********10'

>>> '{0:*<10}'.format(10) ##左对齐

'10********'

>>> '{0:*^10}'.format(10) ##居中对齐

'****10****'

4、精度与进制

1

2

3

4

5

6

7

8

9

10

>>> '{0:.2f}'.format(1/3)

'0.33'

>>> '{0:b}'.format(10) #二进制化妆

'1010'

>>> '{0:o}'.format(10) #八进制

'12'

>>> '{0:x}'.format(10) #16进制

'a'

>>> '{:,}'.format(12369132698) #千分位格式化

'12,369,132,698'

5、使用索引

在python中也有类似于c中的printf()的格式输出标记。在python中格式化输出字符串使用的是%运算符,通用的形式为

格式标记字符串 % 要输出的值组

其中,左边部分的”格式标记字符串“可以完全和c中的一致。右边的'值组'如果有两个及以上的值则需要用小括号括起来,中间用短号隔开。重点来看左边的部分。左边部分的最简单形式为:

%cdoe

其中的code有多种,不过由于在python中,所有东西都可以转换成string类型,因此,如果没有什么特殊需求完全可以全部使用’%s‘来标记。比如:

'%s %s %s' % (1, 2.3, ['one', 'two', 'three'])

它的输出为'1 2.3 ['one', 'two', 'three']',就是按照%左边的标记输出的。化妆虽然第一个和第二值不是string类型,一样没有问题。在这个过程中,当电脑发现第一个值不是%s时,会先调用整型数的函数,把第一个值也就是1转成string类型,然后再调用str()函数来输出。前面说过还有一个repr()函数,如果要用这个函数,可以用%r来标记。除了%s外,还有很多类似的code:

整型数:%d

无符号整型数:%u

八进制:%o

十六进制:%x %X

浮点数:%f

科学记数法: %e %E

化妆根据数值的不同自动选择%e或%f: %g

根据数值的不同自动选择%E或%f: %G

就跟前面说用\进行转义一样,这里用%作为格式标记的标识,也有一个%本身应该如何输出的问题。如果要在”格式标记字符串“中输出%本身,可以用%%来表示。

上面说的只是格式标记的最简间的形式,来看复杂一点的:

‘%6.2f’ % 1.235

在这种形式中,在f的前面出现了一个类似小数的6.2它表示的意思是,总共输出的长度为6个字符,其中小数2位。还有更复杂的:

‘%06.2f’ % 1.235

在6的前面多了一个0,表示如果输出的位数不足6位就用0补足6位。这一行的输出为‘001.24’,可以看到小数也占用一位。类似于这里0这样的标记还有-、+。其中,-表示左对齐,+表示在正数前面也标上+号,默认是不加的。最后来看最复杂的形式:

‘%(name)s:%(score)06.1f’ %{'score':9.5, 'name':'newsim'}

这种形式只用在要输出的内容为dictionary(一种python的数据类型)时,小括号中的(name)和(score)对应于后面的键值对中的键。前面的例子可以看到,”格式标记字符串“中标记的顺序和"要输出的值组"中的值是一一对应的,有顺序,一对一,二对二。而在这种形式中,则不是,每个格式标记对应哪个值由小括号中的键来指定。这行代码的输出为:'newsim:0009.5'。

有时候在%6.2f这种形式中,6和2也不能事先指定,会在程序运行过程中再产生,那怎么输入呢,当然不能用%%d.%df或%d.%d%f。可以用%*.*f的形式,当然在后面的”要输出的值组“中包含那两个*的值。比如:'%*.*f' % (6, 2, 2.345)就相当于'%6.2f' % 2.345。

这是这本书到此为止看起来最复杂的内容。不过如果记不住,或不想那么耐烦,完全可以全部用%s代替,或者用多个"+"来构造类似的输出字符串。这里的%真有点除法的味道,怪不得设计者会选择用%这个除号。

象C 中的sprintf函数一样,可以用“%”来格式化字符串

Table 3.1. 字符串格式化代码

格式描述

%%百分号标记

%c字符及其ASCII码

%s字符串

%d有符号整数(十进制)

%u无符号整数(十进制)

%o无符号整数(八进制)

%x无符号整数(十六进制)

%X无符号整数(十六进制大写字符)

%e浮点数字(科学计数法)

%E浮点数字(科学计数法,用E代替e)

%f浮点数字(用小数点符号)

%g浮点数字(根据值的大小采用%e或%f)

%G浮点数字(类似于%g)

%p指针(用十六进制打印值的内存地址)

%n存储输出字符的数量放进参数列表的下一个变量中

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

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

相关文章

MongoDB的快速手动安装

就是关于MongoDB主从库的安装配置和启动。网上关于MongoDB的安装有大量的文章供大家学习。我这里提供一个Windows环境下MongoDB主从库的快速手动安装的方法&#xff0c;只需要三步即可。 先下载的安装包&#xff0c;解压缩后找到bin文件夹&#xff0c;将bin文件夹拷贝至你自己的…

MP4音频解码信息

文章转载自&#xff1a;http://blog.csdn.net/flyingqr/archive/2010/02/02/5282600.aspx 版权归原作者&#xff0c;编辑&#xff1a;小乙哥 MP4文件格式分为头部和数据两部分&#xff0c;头部是由许多被称作Atom的结构单元嵌套或排列而成&#xff0c;数据部分则完全为实际数据…

时序图 分支_UML用例图

UML用例图用例图有以下东东:用例参与者关联系统边界用例使用椭圆来表示&#xff0c;椭圆里边写上用例的名称:这里的用例可以理解为一个动作或行为,或者一个对象。参与者用一个小人儿,在小人儿下面写上参与者名称,例如学生:关联用一条线表示:把很多个用例放到一个大的矩形框里。…

Python脚本实现汉子转拼音

起步 中华文化博大精深&#xff0c;是中华民族的财富&#xff0c;吸收和继承发扬中 华文化&#xff0c;是现代每个炎黄子孙无可推卸的天职。 今天小编就交大家用python写一个脚本,实现汉子和拼音之间的转换 pinyin.py 汉字转拼音,With Python Example: from pinyin impor…

MySQL innodb_table_stats表不存在的解决方法

在做实验时&#xff0c;使用mysqldump命令报错[rootlinux-mysql02 3306]# mysqldump -uroot -p123456 -S /u02/data/3306/mysql.sock -A -B --events | gzip > /opt/rep.sql.gzmysqldump: Got error: 1146: Table mysql.innodb_index_stats doesnt exist when using LOCK TA…

自定义封装 banner 组件

1. 效果图预览 2.基本功能 一个简单方便的轮播图组件&#xff0c;基于viewpager 基础上进行的封装。可设置 项目中图片&#xff0c;网络图片&#xff0c; View&#xff1b;支持循环自动播放&#xff0c;手势滑动切换&#xff0c;item点击事件,可设置 点点的样式宽高、颜色、大小…

vb.net服务器启动后cpu占用了70_记一次服务器被异常程序占用的解决过程(怀疑黑客攻击)...

最近在跑实验&#xff0c;但是突然发现程序运行变慢&#xff0c;然后top命令查看程序运行情况&#xff0c;发现有异常进程&#xff0c;名字叫 bash&#xff0c;占用 2400% CPU计算资源。刚开始怀疑是挖矿程序&#xff0c;因实验室网络IP为教育网公网&#xff0c;怀疑被攻击&…

3gp文件格式研究 (转windcao的专栏)

序言 06我开始做3gp文件的播放器,但是关于3gp的文档太少了也很难找,在网友luxh的帮助下,我终于有了第一份关于3gp文件格式的文档《ISO/IEC 14496-12&#xff0c;ISO媒体文件格式》.在此真心感谢luxh的贡献.当然了是英文版的,有文档就不错了.为了便于查阅和理解,我把之后陆续找…

Android开发必用工具及其进阶途径

三百六十行&#xff0c;行行出状元&#xff0c;怎么样才能在Android行业中当个状元了&#xff0c;开发过程中的高效、自我能力的提升显得至关重要&#xff0c;步入IT行业更是要时时刻刻学习&#xff0c;新技术更新快&#xff0c;今天将介绍一下Android开发中必用工具及其进阶途…

MySQL遇到check the manual that corresponds to your MySQL server version for the right syntax错误

原来是MySQL表中不能包含关键字 转载于:https://www.cnblogs.com/flycoding/p/7088465.html

Python脚本实现图片加水印

起步 图片是指由图形、图像等构成的平面媒体,有形式的事物&#xff0c;我们看到的&#xff0c;是图画、照片、拓片等的统称。 为了保护一些原创图片的版权,某些时候我们需要在图片上面,加上水印,当然你可以用Photoshop来做,只不过如果图片数量过多,亦或者图片的动态生成的时候…

yarn 怎么查看有多个job在跑_flink on yarn 模式下提示yarn资源不足问题分析

背景在实时计算平台上通过YarnClient向yarn上提交flink任务时一直卡在那里&#xff0c;并在client端一直输出如下日志&#xff1a;(YarnClusterDescriptor.java:1036)- Deployment took more than 60 seconds. Please check if the requested resources are available in the Y…

MPEG-2TS码流编辑的原理及其应用(转载

[作者&#xff1a;辽宁电视台 赵季伟] 在当今数字媒体不断发展、新媒体业务不断涌现 的前提下&#xff0c;实践证明襁褓中的新媒体只有两种经营方略可供选择&#xff1a;或是购买并集成整套节目&#xff0c;或是低成本深加工新节目&#xff0c;再不可能去按照传统生产模式…

Python中的yield详解

阅读别人的python源码时碰到了这个yield这个关键字&#xff0c;各种搜索终于搞懂了&#xff0c;在此做一下总结&#xff1a; 通常的for…in…循环中&#xff0c;in后面是一个数组&#xff0c;这个数组就是一个可迭代对象&#xff0c;类似的还有链表&#xff0c;字符串&#xf…

shell循环结构之while循环

while循环 1) while CONDITION; dostatementstatement<改变循环条件真假的语句>done 编写脚本&#xff0c;计算1---100的和 #!/bin/bash#sum0i1while [ $i -le 100 ]; dolet sum$sum$ilet i$i1doneecho $sum2) while true; do statementstatementdone #!/bin/bash#while …

python 管道队列_关于python:Multiprocessing-管道与队列

Python的多处理程序包中的队列和管道之间的根本区别是什么&#xff1f;在什么情况下应该选择一种&#xff1f; 什么时候使用Pipe()有优势&#xff1f; 什么时候使用Queue()有优势&#xff1f;Pipe()只能有两个端点。Queue()可以有多个生产者和消费者。何时使用它们如果需要两个…

pip默认使用国内镜像地址

很多小伙伴在ubuntu系统下,使用pip安装会很慢 以为安装源在国外服务器上面 今天小编就教大家配置成让pip默认从国内源中寻找安装包 首先CtrlAltT打开终端 进入家目录 cd ~在家目录中创建一个文件夹,命名为.pip mkdir .pip进入目录,并创建一个名为pip.conf的文件 cd .pip…

“大型票务系统”和“实物电商系统”的数据库选型

讨论请移步至&#xff1a;http://www.zhiliaotech.com/ideajam/idea/detail/423 相关文章&#xff1a; 《今天你买到票了吗&#xff1f;——从铁道部12306.cn站点漫谈电子商务站点的“海量事务快速处理”系统》 不能简单套用“实物电商系统”对“大型票务系统”做需求分析 “大…

FLV文件格式(Z)(转载)

刚才在看一些关于demux的东西&#xff0c;在处理flv格式的文件的时候&#xff0c;由于自己对flv文件的格式不了解&#xff0c;所以就比较云头转向&#xff0c;正好看到了一篇讲述flv文件格式的文章&#xff0c;写的比较明白&#xff0c;所以就转过来了。O(∩_∩)O~flv头文件比较…

mysql-5.7中的innodb_buffer_pool_prefetching(read-ahead)详解

一、innodb的read-ahead是什么&#xff1a; 所谓的read-ahead就是innodb根据你现在访问的数据&#xff0c;推测出你接下来可能要访问的数据&#xff0c;并把它们(可能要访问的数据)读入 内存。 二、read-ahead是怎么做到的&#xff1a; 1、总的来说read-ahead利用的是程序的局部…