点击蓝字关注我们
号外号外!!
根据最新出炉的PYPL6月报告,“通过半年的发展,Python基本已奠定2019-2010年的地位,持续称王就对了!”(CSDN)
看过上期推文的朋友一定会想起来Python最具杀伤力的武器——简洁有效!
贤者曾言:Life is simple, I use Python!
本期精彩看点——字符串
字符串类型(str)是编程中最常用的数据类型。字符串就是一系列字符,在Python中经常见用引号括起来的字符串。(包括单引号、双引号/三引号)
注意:引号必须是英文状态下的,中文状态下的引号会报错!另外,三引号可以换行。(单双引号直接换行会报错)
那么问题来了,如果字符串内容中包含引号,怎么正确输入呢?
法一:用其他类型的引号,避免出现歧义;
法二:利用转义字符\ 。
通过转义字符\加上想表达的引号,程序也可以准确输出。但这个写法容易出错,小编还是更推荐法一。
说到转义字符,我们先来补充一下常用的四个转义字符。
(本文稍后会涉及部分转移符号的运用)
字符串方法和函数篇
1大小写转换
- >>>S='Life is simple, I use Python'
复制代码- 'life is simple, i use python'
复制代码- 'LIFE IS SIMPLE, I USE PYTHON'
复制代码 返回S字符串的小写、大写格式。(注意,这是新生成的字符串,在另一片内存片段中)
- >>> print('ab ABC'.lower())
复制代码- >>> print('ab CD'.upper())
复制代码- >>> print('sherlock holmes'.title())
复制代码 2
字串搜索
- S.count(sub[,start[, end]])
复制代码 返回字符串S中子串sub出现的次数,可以指定从哪里开始计算(start)以及计算到哪里结束(end),索引从0开始计算,不包括end边界。
- >>> print('brubrubr'.count('br'))
复制代码- >>> print('brubrubr'.count('br',1))
复制代码- 2 #index=1,即从‘r’开始查找,查找范围为‘rubrumm’
复制代码- >>> print('brubrubr'.count('br',1,7))
复制代码- >>> print('brubrubr'.count('br',1,8))
复制代码- 方法endwith( )、方法startwith( )
- S.endswith(suffix[, start[, end]])
复制代码- S.startswith(prefix[, start[, end]])
复制代码 检查字符串S是否以suffix结尾,返回布尔值的True和False。suffix可以是一个元组(tuple)。可以指定起始start和结尾end的搜索边界。
同理用来判断字符串S是否是以prefix开头。
- >>> print('abcdef'.endswith('def'))
复制代码- >>> print('abcdef'.endswith('def',4))
复制代码- >>> print('abcdef'.endswith('def',0,5))
复制代码- >>> print('abcdef'.endswith('def',0,6))
复制代码- 方法find( )、方法rfind( ) & 方法index( )、方法rindex( )
- S.find(sub[, start[, end]])
复制代码- S.rfind(sub[, start[, end]])
复制代码- S.index(sub[, start[, end]])
复制代码- S.rindex(sub[, start[, end]])
复制代码 方法find( )搜索字符串S中是否包含子串sub,如果包含,则返回sub的索引位置,否则返回"-1"。可以指定起始start和结束end的搜索位置。
方法index( )和方法find( )一样,唯一不同点在于当找不到子串时,抛出错误。
方法rfind( )则是返回搜索到的最右边子串的位置,如果只搜索到一个或没有搜索到子串,则和方法find( )是等价的。
方法rindex( )同理可知。
3
拼接字符串
Python中利用”+“来合并字符串的方法叫做拼接。
还记得Python中一个最经典的例子——”hello world“,我们对此做个小拓展,可以输出一个” hello xxxx“的输出。
- >>> name='sherlock holmes'
复制代码- >>> print("Hello," + name.title() + "!")
复制代码 4
分割
- 方法split( )、方法rsplit( )、方法splitlines( )
- S.split(sep=None, maxsplit=-1)
复制代码- S.rsplit(sep=None, maxsplit=-1)
复制代码- S.splitlines([keepends=True])
复制代码 这三个函数用来分割字符串,并生成一个列表。下面我们根据例子来理解一下三个函数的用法。
先来看方法split( )的用法:
- >>> 'a b c'.split(maxsplit=1)
复制代码- ['a', 'b c'] #maxsplit限定分割次数
复制代码 根据sep对S进行分割,maxsplit用于指定分割次数,如果不指定sep或者指定为None,则改变分割算法:以空格为分隔符。
和方法是一样的,只不过是从右边向左边搜索。
下面来看看方法splitlines( ),它是用来专门用来分割换行符。
- >>> 'OH MY GOD\n'.split('\n')
复制代码- >>> 'OH MY GOD\n'.splitlines()
复制代码 5
添加空白
- >>> print("Films:\nX-Men\nWonder\nMarvel's The Avengers")
复制代码- >>> print("Films:\n\tX-Men\n\tWonder\n\tMarvel's The Avengers")
复制代码 6
修剪
- 方法strip( )、方法lstrip( )、方法rstrip( )
- S.strip([chars]) #移除左右两边的字符chars,默认移除空白(空格、制表符、换行符)。
复制代码 下面来看一下具体的例子:- >>> ' sherlock holmes '.lstrip()
复制代码- >>> ' sherlock holmes '.rstrip()
复制代码- >>> ' sherlock holmes '.strip()
复制代码- [/code][code]>>> 'sherlock holmes'.lstrip('s')
复制代码- >>> 'sherlock holmes'.rstrip('s')
复制代码- >>> 'sherlock holmes'.strip('s')
复制代码 另外,chars可以是多个字符序列。在移除时,只要是这个序列中的字符,都会被移除。- >>> print('www.example.com'.lstrip('cmowz.'))
复制代码- >>> print('wwwz.example.com'.lstrip('cmowz.'))
复制代码- >>> print('wwaw.example.com'.lstrip('cmowz.'))
复制代码- >>> print('www.example.com'.strip('cmowz.'))
复制代码 由于的前4个字符都是字符序列中的字符,所以都被移除,而第五个字符e不在字符序列中,所以修剪到此结束。同理;中第3个字符a不是字符序列中的字符,所以修剪到此结束。
字符串的转化
type( )函数查看数据类型
- >>> type(int('114525'))#字符串转化为整数
复制代码- [/code][code]>>> type(float('3.0'))#字符串转化为浮点数
复制代码- [/code][code]>>> type(eval("[1,2,[3,4,[5,6],7],8]"))#字符串转化为列表
复制代码- [/code][code]>>> type(eval("{'a':'hi','b':'there'}"))#字符串转化为字典
复制代码- [/code]
- 字符串格式化
- 本文将介绍两种字符串格式化的方法,format( )函数和f-strings。
- 从 Python 2.6开始,新增了一种格式化字符串的函数[code]str.format()
复制代码 ,基本语法是通过和来代替以前的。format函数支持通过位置、关键字、对象属性和下标等多种方式使用,不仅参数可以不按顺序,也可以不用参数或者一个参数使用多次。并且可以通过对要转换为字符串的对象的方法进行扩展。
- '{1} {0}'.format('abc', 123) # 可以不按顺序进行位置映射,输出'123 abc'
复制代码- [/code][code]'{} {}'.format('abc', 123) # 可以不指定参数名称,输出'abc 123'
复制代码- [/code][code]'{1} {0} {1}'.format('abc', 123) # 参数可以使用多次,输出'123 abc 123'
复制代码- [/code][code]'{name} {age}'.format(name='tom', age=27) # 可以按关键字映射,输出'tom 27'
复制代码- [/code][code]'{person.name} {person.age}'.format(person=person) # 可以按对象属性映射,输出'tom 27'
复制代码- [/code][code]'{0[1]} {0[0]}'.format(lst) # 通过下标映射
复制代码 另外,在复杂格式控制方面,format函数也提供了更加强大的控制方式:
- '{:S^+#016,.2f}'.format(1234) # 输出'SSS+1,234.00SSSS'
复制代码 具体控制参数的含义可参见下表:
Life is simple, I use Python.
即日起,关注我们,
无论起步何处,都是Python学习者。
|
|