纯干货文章,容易口渴,但是耐心看完你绝对会有收获噢~

不知道小伙伴有没有遇到过字符串输出有格式要求的情况呢?今天小詹学习分享一波python的字符串格式化的方法。学以致用,首先我们得明确为什么要格式化字符串输出,以及在哪些场景可能会用的上?考虑到这个一百度就有很多,就不赘述啦。

今天的重点是如何基于python对字符串进行格式化输出?小詹先给出两种方法,再逐一按照实例介绍

#方法一: % 格式方式

%[(name)][flags][width].[precision]typecode

#方法二: format 方式

[[fill]align][sign][#][0][width][,][.precision][type]

方法一 % 格式符

基本形式:%[(name)][flags][width].[precision]typecode(name)      可选,用于选择指定的key(与字典形式结合,选择指定的key,友情提醒,字典没有顺序的说法噢)

flags          可选,可供选择的值有: + - 空格 0

width         可选,占有宽度

.precision   可选,小数点后保留的位数(小詹友情提醒,整型d可是没有小数的说法噢)

typecode    必选!

以下结合实例说明每个参数的概念和使用:

1.  (name)      可选,用于选择指定的key,输出字典中指定的key对应的值,字典中没有顺序,只有键值对对应即可:

a = "%(name)s is a %(sex)s of %(age)d years old."%{'age':22,'sex':'boy','name':'xiaozhan'}

print(a)

#运行的结果是(为便于查看,就放到代码一起了):

>>>xiaozhan is a boy of 22 years old.

2.flags       可选,可供选择的值有:(通常与width结合)+       右对齐;正数前加正号,负数前加负号;

-        左对齐;正数前无符号,负数前加负号;

空格    右对齐;正数前加空格,负数前加负号;

0        右对齐;正数前无符号,负数前加负号;用0填充空白处

3.width      可选,占有宽度

这里结合2.3,以对比右对齐和左对齐为例;如下的age部分:

a = "%(name)s is a %(sex)s of %(age)+5d years old."%{'age':22,'sex':'boy','name':'xiaozhan'}

print(a)

a = "%(name)s is a %(sex)s of %(age)-5d years old."%{'age':22,'sex':'boy','name':'xiaozhan'}

print(a)

#运行的结果是(为便于查看,就放到代码一起了):

>>>xiaozhan is a boy of   +22 years old.

>>>xiaozhan is a boy of 22    years old.

4.   .precision    可选,小数点后保留的位数(小詹再次提醒,不要忘了整型无小数噢)

这里比较好懂,还是那句话为例,只不过得把key:age改成float类型!

#认真比较区别!

a = "%(name)s is a %(sex)s of %(age)+10f years old."%{'age':22,'sex':'boy','name':'xiaozhan'}

print(a)

a = "%(name)s is a %(sex)s of %(age)+.10f years old."%{'age':22,'sex':'boy','name':'xiaozhan'}

print(a)

#运行的结果是(为便于查看,就放到代码一起了):

>>>xiaozhan is a boy of +22.000000 years old.

>>>xiaozhan is a boy of +22.0000000000 years old.

细心的朋友会发现上述两句仅有一点之差噢!没错,第一个是没有‘.’,那么10代表的是【width】,为占位宽度;第二个有‘.’,代表【.precision】,为小数点个数

5.typecode    必选(哎哟喂!唯一一个必选!)表示获取对应类型的值并格式化到指定位置s,获取传入对象的__str__方法的返回值,并将其格式化到指定位置

r,获取传入对象的__repr__方法的返回值,并将其格式化到指定位置

c,整数:将数字转换成其unicode对应的值,10进制范围为 0 <= i <= 1114111(py27则只支持0-255);字符:将字符添加到指定位置

o,将整数转换成 八  进制表示,并将其格式化到指定位置

x,将整数转换成十六进制表示,并将其格式化到指定位置

d,将整数、浮点数转换成 十 进制表示,并将其格式化到指定位置

e,将整数、浮点数转换成科学计数法,并将其格式化到指定位置(小写e)

E,将整数、浮点数转换成科学计数法,并将其格式化到指定位置(大写E)

f, 将整数、浮点数转换成浮点数表示,并将其格式化到指定位置(默认保留小数点后6位)

F,同上

g,自动调整将整数、浮点数转换成 浮点型或科学计数法表示(超过6位数用科学计数法),并将其格式化到指定位置(如果是科学计数则是e;)

G,自动调整将整数、浮点数转换成 浮点型或科学计数法表示(超过6位数用科学计数法),并将其格式化到指定位置(如果是科学计数则是E;)

%,当字符串中存在格式化标志时,需要用 %%表示一个百分号

这里用的最多应当是字符型‘s',整型'd',浮点数'f'~对应前边的age即可了解,不做重复举例啦~

这里来一个综合示例:(借用闹笑话那次的啦~)

#综合案例

name = input('name:')

sex = input('sex:')

age = int(input('age:'))

salary = int(input('salary:'))

info = '''\

------info of me-------

name:% 10s

sex:% 10s

age:% 10d

salary:% 10d

'''% (name,sex,age,salary)

print(info)

#运行过程放在这一起方便查看:

name:xiaozhan

sex:boy

age:22

salary:1000000

------info of me-------

name:  xiaozhan

sex:       boy

age:        22

salary:   1000000

方法二 format方式

基本形式: [[fill]align][sign][#][width][,][.precision][type]fill           【可选】空白处填充的字符

align        【可选】对齐方式(需配合width使用)

sign         【可选】有无符号数字【同方法一的flags,仅+-0三种取值】

#            【可选】对于二进制、八进制、十六进制,如果加上#,会显示 0b/0o/0x,否则不显示

,            【可选】为数字添加分隔符,如:1,000,000

width       【可选】格式化位所占宽度

.precision 【可选】小数位保留精度

type         【可选】格式化类型,类似方法一,不重复叙述

这里是用格式化字符串的函数 str.format(),它增强了字符串格式化的功能。基本语法是通过 {} 和 : 来代替以前的 %。format 函数可以接受不限个参数,位置可以不按顺序。和第一种方法一样,以下结合实例说明每个参数的概念和使用:

1.fill           【可选】空白处填充的字符这里比第一种方式拓展性好,可以指定填充的字符

2.align        【可选】对齐方式(需配合width使用)

>,内容右对齐(默认)

^,内容居中

^,内容居中=,内容右对齐,将符号放置在填充字符的左侧,且只对数字类型有效。即使:符号+填充物+数字

3.width       【可选】格式化位所占宽度

以上三个参数结合起来使用较为频繁,例如下面是不同姿势的'我爱小詹'

a = '---{:*<18s}--- span="" class="hljs-string" style="font-size: inherit; line-height: inherit; color: rgb(209, 241, 169); word-wrap: inherit !important; word-break: inherit !important;" a=".format('我爱小詹')

print(a)

#便于展示,结果放代码一起

>>>---我爱小詹**************---

>>>---*******我爱小詹*******---

>>>---**************我爱小詹---

4.#            【可选】对于二进制、八进制、十六进制,如果加上#,会显示 0b/0o/0x,否则不显示b,将10进制整数自动转换成2进制表示然后格式化

c,将10进制整数自动转换为其对应的unicode字符

d,十进制整数

o,将10进制整数自动转换成8进制表示然后格式化;

x,将10进制整数自动转换成16进制表示然后格式化(小写x)

X,将10进制整数自动转换成16进制表示然后格式化(大写X)

下面以小詹的age举例,以二进制的15为例(才不告诉你小詹才15岁呢):

a = 'xiaozhan is {:d} years old'.format(15)

print(a)

a = 'xiaozhan is {:b} years old'.format(15)

print(a)

a = 'xiaozhan is {:#b} years old'.format(15)

print(a)

#便于展示,结果放代码一起

>>>xiaozhan is 15 years old

>>>xiaozhan is 1111 years old

>>>xiaozhan is 0b1111 years old

5. ,            【可选】为数字添加分隔符,如:1,000,000

6. .precision 【可选】小数位保留精度【同方法一,整型无小数】

这里以小詹年薪salary为例哈哈,注意关键区别在{}内:

a = "xiaozhan's salary is {:,d} per year".format(1000000)

print(a)

a = "xiaozhan's salary is {:.2f} per year".format(1000000)

print(a)

a = "xiaozhan's salary is {:,.2f} per year".format(1000000)

print(a)

#便于展示,结果放代码一起

>>>xiaozhan's salary is 1,000,000 per year

>>>xiaozhan's salary is 1000000.00 per year

>>>xiaozhan's salary is 1,000,000.00 per year

基本到这里,两种方法都学的差不多了,小伙伴们自己实操下肯定没啥问题。最后值得一提的是format方法中不一定要将所有值重复列,有重复的可以用类似字典键值对的形式存放。如下例,就用了num=15省去了重复列举15的过程:

a = "numbers: {num:b},{num:o},\

{num:d},{num:x},{num:X}, \

{char:c}".format(num=15,char=65)

print(a)

#便于展示,结果放代码一起

>>>numbers: 1111,17,15,f,F,A

python22个字符串长度_Python系列之——字符串格式化(xiaozhan is a boy of 22 years ol...相关推荐

  1. python如何限制字符串长度_python如何修改字符串长度

    python如何修改字符串长度 发布时间:2020-09-23 17:16:18 来源:亿速云 阅读:95 作者:Leah 今天就跟大家聊聊有关python如何修改字符串长度,可能很多人都不太了解,为 ...

  2. python如何判断字符串长度_Python如何查找字符串的长度?(代码示例)

    在Python中字符串是Unicode代码点的不可变序列.给定一个字符串,我们如何查找它的长度?本篇文章就来给大家介绍在Python中查找字符串长度的四种方法,希望对大家有所帮助.[相关视频教程推荐: ...

  3. python22个字符串长度_python字符串处理内置方法一览表

    序号 方法及描述 1 capitalize() 将字符串的第一个字符转换为大写 2 center(width, fillchar) 返回一个指定的宽度 width 居中的字符串,fillchar 为填 ...

  4. php页面上限制字符串长度,PHP如何限制字符串显示长度

    将一些字符串显示到页面中,规定不超过一定的长度. 先要获取到字符串的长度,strlen( )和mb_strlen( )两个函数可以获取,而这两个函数有有所不同<?php //测试时文件的编码方式 ...

  5. python字符串解释_Python学习:字符串的简单解释,深入浅出

    字符串是python很常见的一种数据类型,比如日志的打印,程序中函数的注释,数据库的访问,变量的操作都需要用到字符串. 一.字符串基础 字符串是由独立字符组成的一个序列,通常包含在单引号('')双引号 ...

  6. python 定义字符串变量_Python变量和字符串详解

    几个月前,我开始学习个人形象管理,从发型.妆容.服饰到仪表仪态,都开始做全新改造,在塑造个人风格时,最基础的是先了解自己属于哪种风格,然后找到参考对象去模仿,可以是自己欣赏的人.明星或模特等,直至最后 ...

  7. python入门之字符串处理_Python基础之字符串操作,格式化。

    Python字符串现在感觉在日常的使用中不多,但仔细看了书以后一些小技巧还是很方便的,我这里简单的记录下. 插入一个超搞逼格的: .format_map(其实这个是字符串的方法.....) In [8 ...

  8. python取字符串一部分_python,如何获取字符串中的子字符串,部分字符串

    说明: 比如有一个字符串,python,如何就获取前3位,或者后2位.在此记录下. 操作过程: 1.通过分割符的方式,下标的方式,获取字符串中的子串 >>> text = 'pyth ...

  9. 使用C语言计算utf-8字符串长度 和取子字符串-转

    C或C++语言处理宽字节字符串上是个弱项,虽然stl定义了wstring等类型,但是实际应用中还是存在一些问题,而C语言的支持就更少了,如果想跨平台,问题就会更多. 最近项目中要处理utf-8字符串, ...

最新文章

  1. python入门到实践-Python编程从入门到实践(基础入门)
  2. [BZOJ 2588]Count on a tree
  3. 晶体封装越小esr越大_SuperFin晶体管技术加持!英特尔新一代10nm可媲美台积电5nm?...
  4. ping 不通 华为三层交换机vlan_华为三层交换机如何让VLAN间不能互通配置精编版...
  5. 【Go语言】面向对象扩展——接口
  6. 抽象类细分举行_什么是用聚类技术聚类的客户细分
  7. 【OpenCV 例程200篇】02. 图像的保存(cv2.imwrite)
  8. docker安装elasticsearch6.5.4
  9. 计算机硬件专业知识西瓜视频,2019年中电脑硬件榜单,空调西瓜+电脑助你当个快乐肥宅...
  10. mysql配置所有ip连接_Mysql查看用户连接数配置及每个IP的请求情况
  11. 复制当前地址到系统剪贴板
  12. HighTec安装教程
  13. 使用粒子群PSO算法实现MPPT-M语言仿真
  14. 相机模型与坐标转换!
  15. Win10笔记本不显示WiFi列表
  16. 单片机编程歌曲c语言发如雪,51单片机电子琴制作
  17. 山东教师教育网-山东教育志愿者服务网
  18. vivo手机光环助手下载游戏怎么打不开_“点亮夜色,点亮你”——全新5G自拍手机,vivo S6系列正式发布...
  19. cenos7开启SMB文件共享,小米摄像头无法搜索到的原因
  20. Python爬取动态加载的网站图片

热门文章

  1. MySQL-SQL语句命令
  2. App 瘦身最佳实践
  3. 美名腾智能起名系统有了新界面
  4. 4舍5入函数 php,php小数四舍五入、取整函数方法
  5. 【MySQL-函数】MySQL常用数学函数:round,ceil,floor,truncate,mod
  6. ITE平台开发 chapter5之jperf测试网络吞吐量
  7. linux 创建dat文件‘,DAT 文件是什么
  8. erp软件和用友的区别
  9. Mysql5.7卸载
  10. 第三章、Tiny4412 U-BOOT移植三 时钟设置【转】