Python 下字符串的提取、分割与删除- 千月的python linux 系统管理指南学习笔记(11)

Python 下字符串的提取、分割与删除
对于文本来讲,提取、分割和删除是我们用的较多的操作。
文本我们可以看成是字符串对象。首先说到的是 in 和 not in操作。

字符串的提取
in 和 not in 判定是否包含字符
我们可以使用 in 或者 not in 来检查一个字符串是否是另一个字符串的一部分。
使用方法:

关键字 [not] in 字符对象 #判定是否存在所示关键字

Python 下字符串的提取、分割与删除- 千月的python linux 系统管理指南学习笔记(11)

in 和 not in 主要调用了 str 对象的 __contains__ 方法。
如果 字符串2 包含 字符串1 则 "字符串1 in 字符串2" 返回 True
我们看下 __contains__ 方法的描述,使用了第2章说过的 ? 帮助。
Python 下字符串的提取、分割与删除- 千月的python linux 系统管理指南学习笔记(11)
从帮助中我们看到 uname.__contains__() 等价于 'Linux' in uname


find() 和 index() 判定包含字符的位置
既然可以判定是否包含字符,包含字符的位置是下一个需要知道的。
字符对象.find('关键字') 字符对象.index('关键字') #查找关键字处于字符串的位置
两个函数都是查询关键字位置的,区别在于返回值不同。
请看例子
Python 下字符串的提取、分割与删除- 千月的python linux 系统管理指南学习笔记(11)
在关键字能查找到的情况下 , index() 和 find() 返回值是相同的,但是在找不到的情况下,find()返回-1 而 index() 抛出一个错误。

startswith() 和 endswith() 判定字符串是否以特定子串开始或者结束
这个方法返回的是T/F,对于验证路由器备份,或者log日志判断第一列等操作还是有意义的。
字符对象.startswith('关键字') 字符对象.endswith('关键字')
例子:
Python 下字符串的提取、分割与删除- 千月的python linux 系统管理指南学习笔记(11)
upper() 和 lower() 忽略大小写
这两个方法非常有用,主要用于对两个字符串比较但是不想考虑其大小写时。
字符对象.upper() 字符对象.lower()
例子:
Python 下字符串的提取、分割与删除- 千月的python linux 系统管理指南学习笔记(11)
对于用户名密码或者验证码输入判定时很有效。
==================================================
字符串的分割
既然可以判定是否包含字符,包含字符的位置是下一个需要知道的。
字符对象[位置1:位置2] #切分字符串
这其实是python中一个很典型的用法。我们可以把 ":" 看成希望得到的子串。
位置1为0 的时候可以写成 [: 位置2]
位置的部分是一个整数,可以为负数。下面是位置的标识。
-5 -4 -3 -2 -1
L i n u x
0 1 2 3 4
[1:4] 截取的是 1 2 3位置的字符,也就是 inu 。不包括4的字符x 。
我们看例子
Python 下字符串的提取、分割与删除- 千月的python linux 系统管理指南学习笔记(11)
日常工作中我们可以依此来截取个 IP 地址或者log日志时间什么的。
还有一种是步长截取,用的不是很多。中间有2个冒号 [ 1:: 2 ]
L i n u x
01 23 4
意思是 从1位开始,每隔2个步长截取一个字符。答案是 iu

split() 根据指定的分隔符对字符串提取
这个方法的典型用法是:把希望作为分隔符的字符串作为参数传递给它。
一般来说分隔符是一个单个字管道符,像 "," " | " 诸如此类。
字符对象.split('分隔符',[应用几次]) #以指定分隔符分割字符串
Python 下字符串的提取、分割与删除- 千月的python linux 系统管理指南学习笔记(11)
我们用逗号进行分割,如果第2个参数输入数字,代表分割次数。
调用的话也很简单。当作列表调用。
如果要以行来分割的话。
splitlines() 可以做到按行分割,但是一般来说行处理不用行分割的方法。这里不赘述了。

==================================================
字符串的删除
lstrip() rstrip() strip() 删除空白或字符
这3个方法本来的意思是删除前导空白 结尾空白 或者 前后空白。但是使用参数删除任意字符。
lstrip() 删除前导空白或者字符
rstrip() 删除结尾空白或者字符
strip() 删除前后的空白或者字符
注:所有strip() 方法会创建或者返回新的字符串对象,不会修改原有对象。
使用方法:
字符对象.strip(['关键字']) #删除空白或者关键字
Python 下字符串的提取、分割与删除- 千月的python linux 系统管理指南学习笔记(11)
我们看到了删除空白的情况,之后看看删除字符的。
Python 下字符串的提取、分割与删除- 千月的python linux 系统管理指南学习笔记(11)
In[19] 显示了当我们关键字是 “<>”的时候,并不是顺序匹配 <> 而是删除了全部的 < 和 >
下面一个例子更明显。
Python 下字符串的提取、分割与删除- 千月的python linux 系统管理指南学习笔记(11)
虽然是删除了前后的字符,但是中间的字符是不会被删除的。
Python 下字符串的提取、分割与删除- 千月的python linux 系统管理指南学习笔记(11)
中间的 e 还在。