python学习笔记|字符串与正则表达式

2019-06-25  本文已影响0人  KeyLiu7

总结一些字符串常用操作以及正则表达式相关

字符串基本操作

获取字符串长度

len(text)

字符串分割

word = text.split(" ")
len(word) # 单词个数

获取子字符串

subText = text[3:10]

字符串重复(*)

text2 = "abc"*5

字符串连接(+)

text3 = text + text2

判断字符串是否存在(in/not in)

if 'a' in text:
if 'a' not in text:

字符串比较

函数 结果
text.isalpha() 判断是否仅包含ASCII字母
text.isalnum() 判断是否仅包含ASCII字母和数字
text.isdigit() 判断是否仅包含数字
text.isdicimal() 判断是否仅包含十进制字符
text.islower() 判断是否仅包含小写字母
text.isupper() 判断是否仅包含大写字母
text.isnumeric() 判断是否仅包含数字字符
text.startwith(startword) 判断是否以startword开头
text.endwith(endword) 判断是否仅包含endword结尾

字符串转换

函数 结果
text.capitalize() 首字母大写
text.title() 每个单词首字母均为大写
text.lower() 均为小写
text.upper() 均为大写
text.swapcase() 小写转大写或大写转小写
text.casefold() 大写转小写

注:casefold() lower() 方法效果相同,均为将大写转为小写,但lower() 只对ASCII编码有效,casefold()对其他语言(非汉语或英文)有效

字符串操作

函数 结果
text.count(subText) subText出现次数
text.replace(old,new) 替换
text.find(subText) 首次出现索引
text.rfind(subText) 最后出现索引
text.join("/") 连接
text.splitlines() 用行分割
text.lstrip(subText) 从左侧删除subText
text.rstrip(subText) 从右侧删除subText

注:text.lstrip([])与text.rstrip([])参数可以是数组,若字符串存在,则执行删除操作,若字符串不存在,则删除前(后)空格

例:获取首字母是大写的单词

[word for word in text.split(" ") if word.istitle()]

获取长度大于5的单词

 [word for word in text.split(" ") if len(word)>5]

正则表达式

正则表达式是语言匹配文本模式的强大工具,由模块re支持,使用时需要导入模块。

通用规则

符号 结果
字符串 匹配字符串
. 匹配单个字符
\w 匹配任意单词字符
\W 匹配任意非单词字符
\s 匹配单个空格字符
\S 匹配单个非空白字符
\d 匹配单个数字
^ 匹配字符串开头
$ 匹配字符串末尾
+ 匹配一个或多个模式
* 匹配零个或多个模式
? 匹配零个或一个模式

搜索

search()查找,其中pattern为匹配规则,text为想要执行搜索的字符串

matchset = re.search(pattern,text)

findall()查找特定模式的所有匹配项

matchset = re.findall(pattern,text)

例:

matchset = re.search(r'..de','dsdasdde') # sdde
matchset = re.search(r'\w\w', '%%ds')  # ds
matchset = re.search(r'^de', 'debxd')  # de
matchset = re.search(r'de+f', 'dsdasddedsdeef')  # deef
matchset = re.search(r'dk*f', 'dsdasddedsdesdf') # df

注:r在模式开始时使用,用于处理原始字符串。使用matchset.group()打印结果

以上是正则表达式的简单使用,但写好正则表达式是不容易的,接下来会用其做一个爬虫项目。

上一篇下一篇

猜你喜欢

热点阅读