02python程序设计基础——字符串
字符串方法 format
1.替换字段名
在最简单的情况下,只需向 format 提供要设置其格式的未命名参数,并在格式字符串中使用未命名字段。此时,将按顺序将字段和参数配对。你还可给参数指定名称,这种参数将被用于相应的替换字段中。你可混合使用这两种方法。
"{foo} {} {bar} {}".format(1, 2, bar=4, foo=3)
'3 1 4 2'
还可通过索引来指定要在哪个字段中使用相应的未命名参数,这样可不按顺序使用未命名 参数。
"{foo} {1} {bar} {0}".format(1, 2, bar=4, foo=3)
'3 2 4 1'
2.基本转换
指定要在字段中包含的值后,就可添加有关如何设置其格式的指令了。首先,可以提供一个 转换标志。
print("{pi!s} {pi!r} {pi!a}".format(pi="π"))
π 'π' '\u03c0'
上述三个标志( s 、 r 和 a )指定分别使用 str 、 repr 和 ascii 进行转换。函数 str 通常创建外观 普通的字符串版本(这里没有对输入字符串做任何处理)。函数 repr 尝试创建给定值的Python表 示(这里是一个字符串字面量)。函数 ascii 创建只包含ASCII字符的表示
你还可指定要转换的值是哪种类型,更准确地说,是要将其视为哪种类型。例如,你可能提 供一个整数,但将其作为小数进行处理。为此可在格式说明(即冒号后面)使用字符 f (表示定 点数)。
"The number is {num}".format(num=42)
'The number is 42'
"The number is {num:f}".format(num=42)
'The number is 42.000000'
你也可以将其作为二进制数进行处理。
"The number is {num:b}".format(num=42)
'The number is 101010'
3.宽度、精度和千位分隔符
宽度是使用整数指定的,如下所示:
"{num:10}".format(num=3)
' 3'
"{name:10}".format(name="Bob")
'Bob '
如你所见,数和字符串的对齐方式不同。对齐将在下一节介绍。
精度也是使用整数指定的,但需要在它前面加上一个表示小数点的句点。
"Pi day is {pi:.2f}".format(pi=3.14159)
'Pi day is 3.14'
当然,可同时指定宽度和精度。
"{pi:10.2f}".format(pi=3.14159)
' 3.14'
实际上,对于其他类型也可指定精度,但是这样做的情形不太常见。
"{:.5}".format("Guido van Rossum")
'Guido'
最后,可使用逗号来指出你要添加千位分隔符。
'One googol is {:,}'.format(10 ** 100)
'One googol is 10,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000'
4.符号、对齐和用 0 填充
有很多用于设置数字格式的机制,比如便于打印整齐的表格。在大多数情况下,只需指定宽 度和精度,但包含负数后,原本漂亮的输出可能不再漂亮。另外,正如你已看到的,字符串和数 的默认对齐方式不同。在一栏中同时包含字符串和数时,你可能想修改默认对齐方式。在指定宽 度和精度的数前面,可添加一个标志。这个标志可以是零、加号、减号或空格,其中零表示使用 0来填充数字。
'{:010.2f}'.format(3.14159)
'0000003.14'
要指定左对齐、右对齐和居中,可分别使用 < 、 > 和 ^ 。
print('{0:<10.2f}\n{0:^10.2f}\n{0:>10.2f}'.format(3.14159))
3.14
3.14
3.14
可以使用填充字符来扩充对齐说明符,这样将使用指定的字符而不是默认的空格来填充。
"{:$^15}".format(" WIN BIG ")
'$$$ WIN BIG $$$'
字符串格式设置示例
# Print a formatted price list with a given width width = 35
# width = int(input('Please enter width: ')) price_width = 10
item_width = width - price_width header_fmt = '{{:{}}}{{:>{}}}'.format(item_width, price_width)
fmt = '{{:{}}}{{:>{}.2f}}'.format(item_width, price_width) print('=' * width) print(header_fmt.format('Item', 'Price')) print('-' * width) print(fmt.format('Apples', 0.4))
print(fmt.format('Pears', 0.5))
print(fmt.format('Cantaloupes', 1.92))
print(fmt.format('Dried Apricots (16 oz.)', 8))
print(fmt.format('Prunes (4 lbs.)', 12)) print('=' * width)
===================================
Item Price
-----------------------------------
Apples 0.40
Pears 0.50
Cantaloupes 1.92
Dried Apricots (16 oz.) 8.00
Prunes (4 lbs.) 12.00
===================================
字符串方法
1. center
方法 center 通过在两边添加填充字符(默认为空格)让字符串居中。
"The Middle by Jimmy Eat World".center(39)
' The Middle by Jimmy Eat World '
"The Middle by Jimmy Eat World".center(39, "*")
'*****The Middle by Jimmy Eat World*****'
2.find
方法find在字符串中查找子串。如果找到,就返回子串的第一个字符的索引,否则返回 - 1 。
'With a moo-moo here, and a moo-moo there'.find('moo')
7
title = "Monty Python's Flying Circus"
title.find('Monty')
0
title.find('Python')
6
title.find('Zirquss')
-1
subject = '$$$ Get rich now!!! $$$'
subject.find('$$$')
0
subject.find('$$$', 1) # 只指定了起点
20
subject.find('!!!', 0, 16) # 同时指定了起点和终点
-1
3.join
join 是一个非常重要的字符串方法,其作用与 split 相反,用于合并序列的元素。
seq = [1, 2, 3, 4, 5]
ep = '+'
sep.join(seq) # 尝试合并一个数字列表
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-19-f3b632463406> in <module>
1 seq = [1, 2, 3, 4, 5]
2 ep = '+'
----> 3sep.join(seq) # 尝试合并一个数字列表 NameError: name 'sep' is not defined
seq = ['1', '2', '3', '4', '5']
ep.join(seq) # 合并一个字符串列表
'1+2+3+4+5'
4.lower
方法 lower 返回字符串的小写版本。
'Trondheim Hammer Dance'.lower()
'trondheim hammer dance'
5.replace
方法 replace 将指定子串都替换为另一个字符串,并返回替换后的结果。
'This is a test'.replace('is', 'eez')
'Theez eez a test'
6.split
split 是一个非常重要的字符串方法,其作用与 join 相反,用于将字符串拆分为序列。
'1+2+3+4+5'.split('+')
['1', '2', '3', '4', '5']
7.strip
方法 strip 将字符串开头和末尾的空白(但不包括中间的空白)删除,并返回删除后的结果。
' internal whitespace is kept '.strip()
'internal whitespace is kept'
最新文章
- Android程序意外Crash后自动重启
- hdu 1845
- Javascript异步请求你能捕获到异常吗?
- CUDA编程-(2)其实写个矩阵相乘并不是那么难
- linux之SQL语句简明教程
- 自学php的几个例子(包含AMP(Apache、MySQL、PHP)环境搭建链接)
- python遗产
- PHP文件上传后缀名与文件类型对照表
- POJ 2609 Ferry Loading
- HTML 5入门知识(三)
- 使用 SharpZipLib 打包数据到 ZIP 文件
- Learning-Python【17】:包的导入使用
- AWS EC2 Root密码重置
- Map<;String, String>;循环遍历的方法
- Alpha 冲刺报告(2/10)
- Building a Simple User Interface(创建一个简单的用户界面)
- QQ浏览器兼容模式下Cookie失效 导致的NetCore Cookie认证失效
- 解决ueditor编辑器图片在线管理图片无法显示
- openstack学习笔记(一)-openstack的基础知识
- windows系统下同时启动三台Tomcat服务的配置&;并设置开机启动服务
热门文章
- [LeetCode]-algorithms-String to Integer (atoi)
- (转)js中then方法说明
- TiDB单机安装测试
- 1. JDK 、 JRE 、JVM有什么区别和联系?
- EasyHook Creating a remote file monitor
- promise不会被return触发, 一个promise对象中不会被Promise.reject触发
- Linux下去掉^M方法
- 阶段3 1.Mybatis_06.使用Mybatis完成DAO层的开发_9 typeAliases标签和package标签
- Jmeter之非GUI模式(命令行)执行
- laravel 5.6 使用RabbitMQ作为消息中间件