Python 学习笔记(6)— 字符串格式化
字符串格式化处理
远古写法
以前通常使用运算符号 % ,%s 插入的值 String 类型,%.3f 指插入的值为包含 3 位小数的浮点数:
format1 = "%s, %s!" % ('Hello', 'World')
# 'Hello, World!'
关键字插入法:
temp = string.Template('I am $name, I like $what!;)
temp.substitute(name='Liang', what='Apple')
# 'I am Liang, I like Apple!'
Python 3 推荐方法
新版本 Python 中,应选择使用字符串方法 format,每个替换字段都用 {} 大括号(花括号)括起,括号内可留空或添加格式设置信息:
- 一般用法:
'I am {},I like {}'.format('Liang', 'Apple')
# 'I am Liang, I like Apple!'
'I am {0},I like {1}'.format('Liang', 'Apple')
# 'I am Liang, I like Apple!'
- 索引也可无需像上面一样顺序排列,但注意不能同时使用自动索引和手工索引:
'I am {1},I like {0}'.format('Apple', 'Liang')
# 'I am Liang, I like Apple!'
- 更可以像上面关键字插入法一样,给每个替换字段命名,名称后面跟冒号可以设置格式:
'{name} is {value:.2f},'.format(name='π', value=pi)
# 'π is 3.14'
- 终极简约写法,在字符串前面加上
f,便可直接将值或变量写在大括号内:
f"{'π'} is {pi:.2f}"
# 'π is 3.14'
- 如果输出结果中需要包含大括号,则可使用两个大括号来指定:
"{{我需要使用{what}啊!}}".format(what='大括号')
# {我需要使用大括号啊!}
- 关键字插入法可以和索引同时使用:
'{foo} {1} {bar} {0}'.format(1, 2, foo=3, bar=4)
# '3 1 2 4'
基本转换
指定占位符要转换的类型;
例如,你可以提供一个整数,但将其作为小数进行处理:
num = 1024
f'The number is {num:f}'
# 'The number is 1024.000000'
亦或者将其作为二进制处理:
num = 1024
f'The number is {num:b}'
# 'The number is 10000000000'
以下为字符串格式设置类型说明符:
| 说明符 | 含义 |
|---|---|
| b | 将整数表示为二进制 |
| c | 将整数解读为Unicode码点 |
| d | 将整数视为十进制数进行处理,这是整数默认使用的说明符 |
| e | 使用科学表示法来表示小数(用 e 来表示指数) |
| E | 与 e 相同,但使用 E 来表示指数 |
| f | 将小数表示为定点数 |
| F | 与 f 相同,但与特殊值(nan 和 inf),使用大写表示 |
| g | 自动在定点表示法和科学表示法之间做选择。这是默认用于小数的说明符,但在默认情况下至少有 1 位小数 |
| G | 与 g 相同,但使用大写来表示指数和特殊值 |
| n | 与 g 相同,但插入随区域而异的数字分隔符 |
| o | 将整数表示为八进制数 |
| s | 保持字符串的格式不变,这是默认用于字符串的说明符 |
| x | 将整数表示为十六进制数并使用小写字母 |
| X | 与 X 相同,但使用大写字母 |
| % | 将数表示为百分比值(乘以100,按说明符 f 的设置格式,再在后面加上 %) |
宽度、精度和千位分隔符
在字符串格式化处理是,不但可以转换类型,还可以设置转换字段的宽度和精度;
宽度使用整数表示:
num = 1024
f'{num:10}'
# ' 1024'
数字和字符串的默认对齐方式不同:
num = '1024'
f'{num:10}'
# '1024 '
精度也是使用整数表示,但需要在整数前加上小数点:
num = 1024
f'{num:.2f}'
# '1024.00'
宽度可以和精度同时指定:
num = 1024
f'{num:10.2f}'
# ' 1024.00'
字符串类型也可以指定精度,但不推荐使用,使用切片处理则更好理解:
str = '今天天气不错~'
f'{str:.2}'
# '今天'
在冒号后面添加一个逗号可以为数值添加千位分隔符:
num = 10000000000000
f'{num:,}'
# '10,000,000,000,000'
填充、对齐与符号
在不添加对齐符号(使用默认对齐方式)的情况下,尽可以使用 0 进行有意义的填充操作:
num = 1024
f'{num:010}'
# '0000001024'
但是在添加了对齐符号之后,就可以在对齐符号前面任意添加一个字符表示填充字符了;
对齐符号:<(左对齐)、>(右对齐)、^(居中),写在宽度之前:
num = 1024
f'{num:<10}'
'1024 '
f'{num:^10}'
' 1024 '
f'{num:>10}'
' 1024'
当替换字段为数值时,可为替换字段添加正负符号,
添加 + 符号时,加号写在对齐符号之后,宽度整数之前;
添加 - 符号时,减号写在替换字段的之前;
可以理解为将替换字段的数值乘以 +1(将 + 显示)或 -1 :
num = 1024
f'{num:>+10}'
' +1024'
f'{-num:>10}'
' -1024'
如果需要为负数添加符号:
num = -1024
f'{num:>10}'
' -1024'
f'{-num:>+10}'
' +1024'
= 是一种添加了正负符号之后的另一种对齐符号(可以理解为 两端对齐),作用是将填充字符放在符号和数字之间:
num = 1024
f'{num:=+10}'
'+ 1024'
f'{-num:=10}'
'- 1024'
总结
'{[0]sum[1][2][3][4][5]}'
0:为替换字段添加 - 符号(替换字段须为数字且不为负数,因为负数无需再多此一举);
1:为替换字段指定宽度之后可以在此位置指定填充字符,默认为空格;
2:为替换字段指定宽度之后可以在此位置指定对齐符号,<(左对齐) / ^(居中) / >(右对齐) / =(两端对齐,只能用于类型为数值切有正负符号的替换字段);
3:为替换字段添加 + 符号(替换字段须为数字);
4:指定替换字段的宽度,只能填写整数;
5:指定替换字段的精度或转换类型;
Python 学习笔记(6)— 字符串格式化的更多相关文章
- python学习笔记:字符串格式化
% 格式化方法 "我的名字是 %s, 我的年龄是 %d" % (name, age) 常用格式:%[(name)][flags][width].[precision]typecod ...
- Python学习笔记3—字符串
原始字符串 使用\转义或者r,这种方法在网站设置网站目录结构的时候非常管用. >>> dos="c:\news" >>> print dos c ...
- Python学习笔记:字符串
字符串 字符串定义:字符串可以使用一对单引号.双引号或三引号来定义,即便是单个字符也会当做字符串来处理(Python中没有字符类型,单个字符也就是只有一个字符的字符串而已). 原始字符串:字符串中反斜 ...
- python学习笔记(二)-字符串方法
python的字符串内建函数: #====================常用方法=============================name = 'besttest' new_name = n ...
- Python学习笔记之字符串
一.字符串格式化 >>> format="Hello,%s. %s enough for ya?" >>> values=('World','H ...
- 从零开始的Python学习Episode 3——字符串格式化与for循环
一.字符串格式化 利用一段注释记录想要输出的字符串格式,并用 %s . %d 或 %f 依次代替要输出的数据(%s代表字符串,%d代表数字,%f代表浮点数),然后在这段注释之后依次加上要输出的数据. ...
- 【Python学习笔记】字符串拼接方法(5种)总结
字符串的 5 种拼接方法: “+”号 “,”号 直接连接 格式化 多行字符串拼接 第一种:“+”号 print("Hello"+"Python") 打印结果: ...
- python学习笔记(字符串操作、字典操作、三级菜单实例)
字符串操作 name = "alex" print(name.capitalize()) #首字母大写 name = "my name is alex" pri ...
- 【Python学习笔记】字符串操作
字符串的表示 python中的字符串是一个常量,可以使用单引号'',双引号""或三引号""" """来创建一个字符串常量 ...
- Python学习笔记一--字符串的使用
一.基本操作 1. 合并字符串:“+” 2. 打印重复的字符串:"*" 3. 按位获取字符串中的字符:索引 4. 按位获取字符串中的子字符串:分片 5 ...
随机推荐
- 如何取得Spring管理的bean
本文主要讲3中实现方式,请用第3种方法(通用) 1.servlet方式加载时配置如下 <servlet> <servlet-name>springMVC</servlet ...
- 关于导入别人的web项目,tomcat无法显示的问题
这两天头大,老师讲了javaWeb项目,讲完就给我们发了代码,我就想导入直接用,结果它tomcat的add and remove 里一直没有这个项目名字 刚导入还报错,这个可能我的版本太低了,兼容不了 ...
- <a>标签 IOS 安卓 亲测有效
一.普通链接 <a href="http://www.baidu.com">百度</a> 二.邮件链接 1.标签最简式 <a href="m ...
- Sublime Text 3 实现C语言代码的编译和运行
Sublime Text 3 是一款优秀的代码编辑软件.界面简洁,轻巧快速,很受大家的欢迎. 最近开始用他来编辑数据结构的C语言代码,这就需要在新建编译系统.具体方法如下: 首先: 接下来是关键的一步 ...
- 入职两个月,WPF开发感想
1 .新工作,新开始 2.WPF初次接触以及学习MVVM开发模式 3.后台数据操作,ORACLE 存储过程(边做边学) 4.总结 4.1工作开发中的小问题 ,遇到的坑: 4.2 解决的问题,学校到的 ...
- 推荐 2 款超牛逼、炫酷、实用的Docker管理工具!
Docker技术的火热程度,想必每个互联网IT技术人员都能时时感受的到,的确,近些年,国内对于Docker容器技术的应用需求越来越强烈!! 人均年薪80万以上,docker到底是什么?为什么这么火? ...
- 基于TCP协议的套接字编程
06.26自我总结 1.关于Socket Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口.在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在 ...
- Android解决RecyclerView中的item显示不全方案
最近的项目中实现订单确定页面.需要使用ScrollView嵌套RecyclerView,当RecyclerView中的item数量比较多时,就会出现item只显示一部分数据,并没有将用户勾选的商品数量 ...
- 【区分】Typescript 中 interface 和 type
在接触 ts 相关代码的过程中,总能看到 interface 和 type 的身影.只记得,曾经遇到 type 时不懂查阅过,记得他们很像,相同的功能用哪一个都可以实现.但最近总看到他们,就想深入的了 ...
- MVC WebApi 实现Token验证
基于令牌的认证 我们知道WEB网站的身份验证一般通过session或者cookie完成的,登录成功后客户端发送的任何请求都带上cookie,服务端根据客户端发送来的cookie来识别用户. WEB A ...