Python 随身听-巩固基础-字符串格式化的几种套路

前段日子,解读官方文档时,我们已经看过了官方文档里面的一些字符串的常用格式化方法Python权威学习资料-官方文档-DE8UG解读-07-输入输出文件和字符串,今天我们再把字符串格式化的方法复习一下,增加一些内容,顺便总结一下常见的几种套路。

以下示例主要参考https://docs.python.org/zh-cn/3/library/string.html#formatspec。

str.format() 语法的示例以及与旧式 % 格式化的比较

该语法在大多数情况下与旧式的 % 格式化类似,只是增加了 {} 和 : 来取代 %。例如,,'%03.2f' 可以被改写为 '{:03.2f}'。

新的格式语法还支持新增的不同选项,将在以下示例中说明。

按位置访问参数:

>>>

>>>'{0}, {1}, {2}'.format('a', 'b', 'c')

'a, b, c'

>>>'{}, {}, {}'.format('a', 'b', 'c') # 3.1+ only

'a, b, c'

>>>'{2}, {1}, {0}'.format('a', 'b', 'c')

'c, b, a'

>>>'{2}, {1}, {0}'.format(*'abc') # 用*解构序列

'c, b, a'

>>>'{0}{1}{0}'.format('abra', 'cad') # 按位置重复匹配

'abracadabra'

按名称访问参数:

>>>

>>>'Coordinates: {latitude}, {longitude}'.format(latitude='37.24N', longitude='-115.81W')

'Coordinates: 37.24N, -115.81W'

>>>coord = {'latitude': '37.24N', 'longitude': '-115.81W'}

>>>'Coordinates: {latitude}, {longitude}'.format(**coord) # 注意匹配字典的key

'Coordinates: 37.24N, -115.81W'

访问参数的属性:

>>>

>>>c = 3-5j

>>>('The complex number {0} is formed from the real part {0.real} '

... 'and the imaginary part {0.imag}.').format(c) # 复数的属性

'The complex number (3-5j) is formed from the real part 3.0 and the imaginary part -5.0.'

>>>class Point:

... def __init__(self, x, y):

... self.x, self.y = x, y

... def __str__(self):

... return 'Point({self.x}, {self.y})'.format(self=self)

...

>>>str(Point(4, 2))

'Point(4, 2)' # DE8UG注:直接自定义格式拼接字符串

访问参数的项:

>>>

>>>coord = (3, 5)

>>>'X: {0[0]}; Y: {0[1]}'.format(coord)

'X: 3; Y: 5'

替代 %s 和 %r:

用来处理是否显示字符串的引号。

>>>

>>>"repr() shows quotes: {!r}; str() doesn't: {!s}".format('test1', 'test2')

"repr() shows quotes: 'test1'; str() doesn't: test2"

对齐文本以及指定宽度:

这里其实比较好记,小尖角朝哪边就是往哪边对齐。记得写一个英文的冒号后面写这个格式符号,再后面的数字指的是占用多少个符号位。

< 左

> 右

^ 中间

>>>

>>>'{:<30}'.format('left aligned')

'left aligned '

>>>'{:>30}'.format('right aligned')

' right aligned'

>>>'{:^30}'.format('centered')

' centered '

>>>'{:*^30}'.format('centered') # use '*' as a fill char

'***********centered***********'

替代 %+f, %-f 和 % f 以及指定正负号:

>>>

>>>'{:+f}; {:+f}'.format(3.14, -3.14) # show it always

'+3.140000; -3.140000'

>>>'{: f}; {: f}'.format(3.14, -3.14) # 正数前面有个空格

' 3.140000; -3.140000'

>>>'{:-f}; {:-f}'.format(3.14, -3.14) # 只显示负号 -- same as '{:f}; {:f}'

'3.140000; -3.140000'

替代 %x 和 %o 以及转换基于不同进位制的值:

可用的整数表示类型是:

类型:意义

'b':二进制格式。输出以 2 为基数的数字。

'c':字符。在打印之前将整数转换为相应的 unicode 字符。

'd':十进制整数。输出以 10 为基数的数字。

'o':八进制格式。输出以 8 为基数的数字。

'x':十六进制格式。输出以 16 为基数的数字,使用小写字母表示 9 以上的数码。

'X':十六进制格式。输出以 16 为基数的数字,使用大写字母表示 9 以上的数码。

'n':数字。这与 'd' 相似,不同之处在于它会使用当前区域设置来插入适当的数字分隔字符。

None:和 'd' 相同。

>>>

>>># format also supports binary numbers

>>>"int: {0:d}; hex: {0:x}; oct: {0:o}; bin: {0:b}".format(42)

'int: 42; hex: 2a; oct: 52; bin: 101010'

>>># with 0x, 0o, or 0b as prefix:

>>>"int: {0:d}; hex: {0:#x}; oct: {0:#o}; bin: {0:#b}".format(42)

'int: 42; hex: 0x2a; oct: 0o52; bin: 0b101010'

使用逗号作为千位分隔符:

>>>

>>>'{:,}'.format(1234567890)

'1,234,567,890'

表示为百分数:

>>>

>>>points = 19

>>>total = 22

>>>'Correct answers: {:.2%}'.format(points/total)

'Correct answers: 86.36%'

使用特定类型的专属格式化:

>>>

>>>import datetime

>>>d = datetime.datetime(2010, 7, 4, 12, 15, 58)

>>>'{:%Y-%m-%d %H:%M:%S}'.format(d)

'2010-07-04 12:15:58'

嵌套参数以及更复杂的示例:

>>>

>>>for align, text in zip('', ['left', 'center', 'right']):

... '{0:{fill}{align}16}'.format(text, fill=align, align=align)

...

'left<<<<<<<<<<<

'^^^^^center^^^^^'

'>>>>>>>>>>>right'

>>>

>>>octets = [192, 168, 0, 1]

>>>'{:02X}{:02X}{:02X}{:02X}'.format(*octets)

'C0A80001'

>>>int(_, 16) # DE8UG注:这里_指的是上一行代码的输出结果

3232235521

>>>

>>>width = 5

>>>for num in range(5,12):

... for base in 'dXob':

... print('{0:{width}{base}}'.format(num, base=base, width=width), end=' ')

... print()

...

5 5 5 101

6 6 6 110

7 7 7 111

8 8 10 1000

9 9 11 1001

10 A 12 1010

11 B 13 1011

小结

以上就是 format 的各种格式了,这些的综合应用可以在控制台打印出多种形式的输出。比较新的几个 python 版本已经内置了 f-string,也还是可以用冒号配合后面的格式符号来格式化字符串的。用的时候根据不同情况去拼装就 ok。

python输出字符串的格式控制千分位分隔符_Python 随身听-巩固基础-字符串格式化的几种套路...相关推荐

  1. java 千分位格式话_Java 字符串小数转成千分位格式

    java中需要将字符串小数转成千分位格式显示,如下代码,原理是使用正则表达式对整数位进行千分位格式化,然后小数位拼接起来.为什么要这么麻烦的处理,是因为在android程序中使用的NumberForm ...

  2. 返回参数数字的千分位分隔符字符串+按指定长度切割数组

    刷题的时候刷到了返回参数数字的千分位分隔符字符串的题目 题目:返回参数数字的千分位分隔符字符串 输入:12345 输出:12,345输入:1234567 输出:1,234,567 (很抓马,我的脑袋空 ...

  3. 格式金额,默认保留两位小数,并格式化为千分位

    项目场景: 商城类项目中大多需要格式化金额,后缀保留两位小数,并且千元之后加上千分位符号 例子:32,131.00 这种金额,贴上js代码,可以新建一个js引用就行 解决方案: //格式金额,默认保留 ...

  4. 返回参数数字的千分位分隔符字符串

    返回参数数字的千分位分隔符,每千位划一个分隔符,因为位数不确定,所以选用递归的方式 <!DOCTYPE html> <html><head><meta cha ...

  5. 【Python】Pyecharts饼图增加千分位分隔符

    [Python]Pyecharts饼图增加千分位分隔符 formatter=JsCode(""" function (params) {var data=params.d ...

  6. excel数据处理_Excel数据处理(1):千分位分隔符

    需要将一些数,用千分位分隔符来表示,如何在Excel中设置呢? 1.原始数据: 自制图,有些简陋~~ 2.需求描述: 将原始数据,设置千分位分隔符 3.处理步骤: 1)选中需要改变格式的单元格区域,右 ...

  7. 数字格式化:设置千分位分隔符

    直接上代码[作为自己的工具函数记录使用] 步骤描述 1. 基本的数据判空.正负判断.小数与整数的各自截取处理 2. 数据的长度判断.数据反转.每3位增加千分位分隔符并进行回调,直到全部加完 3. 千分 ...

  8. R中千分位分隔符数值(美式数值)读取

    1. 千分位分割数值 对于英美数值数据,千分位分隔符(逗号分割)很常见,如下面一份房地产销售数据,land.squre.feet, gross.square.feet两列数据. 2. R不能自动识别千 ...

  9. BootstrapTable之千分位分隔符设置

    BootstrapTable之千分位分隔符设置 前言 在最近的工作中遇到了数字数据显示千分位分隔符的需求,这是数字显示中常见的需求,好在BootstrapTable中可以很容易的实现,具体思路为:写一 ...

最新文章

  1. Python内置数据结构及其复杂度
  2. Operator Overloading
  3. ENSP配置 实例八 三层交换机DHCP配置加VLAN划分实验
  4. Python中使用libsvm
  5. 【[Violet]樱花】
  6. 代码审计 phpcmsv9 MVC介绍
  7. vue 路由参数变化,页面不刷新(数据不更新)解决方法
  8. think in uml 2.1
  9. 一篇好奇心文,带你看懂基金的运营全貌
  10. docker部署showdoc
  11. 计算机网络无线局域网设计,无线校园网设计全攻略
  12. Java项目:基于SSM实现驾校预约管理系统
  13. Scintilla教程(7): 多选以及滚动
  14. 进程调度时间计算方式
  15. LoRa自动组网实现方案
  16. 2022年场(厂)内专用机动车辆安全管理考试模拟100题模拟考试平台操作
  17. Android 全埋点方案盘点
  18. 项目进度没有把控好,被领导足足骂了10多分钟,吭都不敢吭一声
  19. NameNode概述
  20. 柔性电子:灵敏电阻,基于高定向,独立的碳纳米管阵列的柔性压力传感器

热门文章

  1. Excel2000/XP和PowerPoint2000/XP下内部COM插件的实现
  2. 【181114】VC++制作木质相框源代码
  3. mysql join和视图区别_JOIN与视图
  4. Git命令非主流札记
  5. 使用手机摄像头实现视频监控实时播放
  6. MySQL之建表语句
  7. gt ge lt le ne eq 缩写 的 英文 含义
  8. Advanced Functional Materials 投稿指南
  9. 重启计算机故障的原因,电脑无故重新启动的硬件原因是什么
  10. 基本绝缘,附加绝缘,双重绝缘和加强绝缘的区别