python输出字符串的格式控制千分位分隔符_Python 随身听-巩固基础-字符串格式化的几种套路...
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 随身听-巩固基础-字符串格式化的几种套路...相关推荐
- java 千分位格式话_Java 字符串小数转成千分位格式
java中需要将字符串小数转成千分位格式显示,如下代码,原理是使用正则表达式对整数位进行千分位格式化,然后小数位拼接起来.为什么要这么麻烦的处理,是因为在android程序中使用的NumberForm ...
- 返回参数数字的千分位分隔符字符串+按指定长度切割数组
刷题的时候刷到了返回参数数字的千分位分隔符字符串的题目 题目:返回参数数字的千分位分隔符字符串 输入:12345 输出:12,345输入:1234567 输出:1,234,567 (很抓马,我的脑袋空 ...
- 格式金额,默认保留两位小数,并格式化为千分位
项目场景: 商城类项目中大多需要格式化金额,后缀保留两位小数,并且千元之后加上千分位符号 例子:32,131.00 这种金额,贴上js代码,可以新建一个js引用就行 解决方案: //格式金额,默认保留 ...
- 返回参数数字的千分位分隔符字符串
返回参数数字的千分位分隔符,每千位划一个分隔符,因为位数不确定,所以选用递归的方式 <!DOCTYPE html> <html><head><meta cha ...
- 【Python】Pyecharts饼图增加千分位分隔符
[Python]Pyecharts饼图增加千分位分隔符 formatter=JsCode(""" function (params) {var data=params.d ...
- excel数据处理_Excel数据处理(1):千分位分隔符
需要将一些数,用千分位分隔符来表示,如何在Excel中设置呢? 1.原始数据: 自制图,有些简陋~~ 2.需求描述: 将原始数据,设置千分位分隔符 3.处理步骤: 1)选中需要改变格式的单元格区域,右 ...
- 数字格式化:设置千分位分隔符
直接上代码[作为自己的工具函数记录使用] 步骤描述 1. 基本的数据判空.正负判断.小数与整数的各自截取处理 2. 数据的长度判断.数据反转.每3位增加千分位分隔符并进行回调,直到全部加完 3. 千分 ...
- R中千分位分隔符数值(美式数值)读取
1. 千分位分割数值 对于英美数值数据,千分位分隔符(逗号分割)很常见,如下面一份房地产销售数据,land.squre.feet, gross.square.feet两列数据. 2. R不能自动识别千 ...
- BootstrapTable之千分位分隔符设置
BootstrapTable之千分位分隔符设置 前言 在最近的工作中遇到了数字数据显示千分位分隔符的需求,这是数字显示中常见的需求,好在BootstrapTable中可以很容易的实现,具体思路为:写一 ...
最新文章
- Python内置数据结构及其复杂度
- Operator Overloading
- ENSP配置 实例八 三层交换机DHCP配置加VLAN划分实验
- Python中使用libsvm
- 【[Violet]樱花】
- 代码审计 phpcmsv9 MVC介绍
- vue 路由参数变化,页面不刷新(数据不更新)解决方法
- think in uml 2.1
- 一篇好奇心文,带你看懂基金的运营全貌
- docker部署showdoc
- 计算机网络无线局域网设计,无线校园网设计全攻略
- Java项目:基于SSM实现驾校预约管理系统
- Scintilla教程(7): 多选以及滚动
- 进程调度时间计算方式
- LoRa自动组网实现方案
- 2022年场(厂)内专用机动车辆安全管理考试模拟100题模拟考试平台操作
- Android 全埋点方案盘点
- 项目进度没有把控好,被领导足足骂了10多分钟,吭都不敢吭一声
- NameNode概述
- 柔性电子:灵敏电阻,基于高定向,独立的碳纳米管阵列的柔性压力传感器