Python:格式化字符串的几种方式
1、%
'abc%s'%'123' 'abc123' 'abc%s%s'%('123','456') 'abc123456'
当变量v是一个Tuple、List且其中元素数量和字符串中%数量相同时,可以直接在后边写%v,例如:
A=(1,2) print('A的值是%s和%s'%A) A的值是1和2
补充:
%m.nf:保留n位小数,显示时最小宽度为m(如果不足,会在之前补空格)
2、format
'abc{}'.format('123') 'abc123' 'abc{}{}'.format('123','456') 'abc123456'
'abc{0}{1:0.2f}'.format(1,123.456)
abc1123.45
2.1、参数
①格式化时可以不按顺序
'{0} {1}'.format('Hello' , 'world') #按顺序 'Hello world' '{1} {0} {1}'.format('Hello' , 'world') #不按顺序 'world Hello world'
从这里可以看出,{ n }中的数字n指示format的第n-1个参数,而这个n的大小不用遵守先后顺序
②参数可以是字典、列表
#字典 site = { 'name':'菜鸟教程' , 'url':'www.runoob.com'} print('网站名:{name} , 地址 {url}'.format(**site)) #列表 site = [ '菜鸟教程' , 'www.runoob.com' ] print('网站名:{0[0]} , 地址 {0[1]}'.format(site))
输出结果为:
网站名:菜鸟教程 , 地址 www.runoob.com
网站名:菜鸟教程 , 地址 www.runoob.com
2.2、数字格式化
①例子
#小数 '{:.2f}'.format(3.1415926) '3.14' #百分比 '{:.2%}'.format(0.25)
'25.00%'
②格式化说明表
数字 | 格式 | 输出 | 说明 |
3.1415926 | {:.2f} | 3.14 | 保留小数点后两位 |
3.1415926 | {:+.2f} | +3.14 | 带符号且保留小数点后两位 |
-1 | {:+.2f} | -1.00 | 带符号且保留小数点后两位 |
2.71828 | {:.0f} | 3 | 不带小数 |
5 | {:0>2d} | 05 | 宽度为2,不足则用0左填充 |
5 | {:x<4d} | 5xxx | 宽度为4,不足则用x右填充 |
10 | {:x<4d} | 10xx | 宽度为4,不足则用x右填充 |
1000000 | {:,} | 1,000,000 | 以逗号分隔的数字 |
0.25 | {:.2%} | 25.00% | 百分比格式,保留两位小数 |
1000000000 | {:.2e} | 1.00e+09 | 科学计数法,底数保留两位小数 |
13 | {:>10d} | 13 | 宽度为10,数字右对齐 |
13 | {:<10d} | 13 | 宽度为10,数字左对齐 |
13 | {:^d} | 13 | 宽度为10,数字居中 |
11 |
{:b} {:d} {:o} {:x} {:#x} {:#X} |
1011
11
13
b
0xb
0XB
|
二进制
十进制
八进制
十六进制
0x开头的十六进制(小写)
0X开头的十六进制(大写)
|
补充
1、.n就表示n位小数
2、^、<、>分别表示居中、左对齐、右对齐;:后边带填充的字符,只能是一个字符,不指定则默认用空格
3、+表示在正数前显示+,负数前显示-;即这里的+表示让带符号数显示它本来的符号
4、用{}来转义大括号:
'{}在字母中的位置是{{3}}'.format('c') 'c在字母中的位置是{3}' #后边被转义了
5、数字前补零
见上表标红部分
6、将前缀与dict结合起来
info={'ID':16,'Year':2021,'Month':6,'Day':8} suffix=r'\sensor_data_{ID}-{Year}-{Month:0>2d}-{Day:0>2d}.csv'.format(**info)
#结果为
'\\sensor_data_16-2021-06-08.csv'
3、f前缀+{}
str='123' str2='456' f'abc{str}' 'abc123' f'abc{str}{str2}' 'abc123456'
补充
格式化日期与时间,见Python:datetime - ShineLe - 博客园最后一条。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性