Python字符串与正则表达式

字符串

在Python中,字符串属于不可变序列类型,使用单引号、双引号、三单引号或三双引号作为界定符,不同界定符之间可相互嵌套。字符串操作包括比较、元素访问、切片、计数、格式化、查找、替换等。将字符串赋值给多个对象时,对于短字符串,内存中只有一个副本,多个对象共享。在python2.x中,字符串有 str 和 unicode 两种,基类都是 basestring 。在python3.x中,只提供 str 类型,程序源文件默认为 UTF-8 编码,全面支持中文(如: 中国 = {'富强':6,'民主':9,'文明':6,'和谐':9})

字符串格式化

%-+0m.n格式字符%x
格式标志左对齐输出对正数加正号指定空位填0指定最小宽度指定精度指定类型格式运算符待转换表达式
格式字符说明格式字符说明
%s字符串(采用str()的显示)%x十六进制整数
%r字符串(采用repr()的显示)%e指数(基底写为e)
%c单个字符%E指数(基底写为E)
%b二进制整数%f、%F浮点数
%d十进制整数%g指数(e)或浮点数
%i十进制整数%G指数(E)或浮点数
o%八进制整数%%字符“%”
此外还可以使用 format()方法进行格式化。

字符串常用函数

Str = "red,green,blue,white,black,white"
STR = "A Dream is a Wish your Heart made"
LIS = ["red","green","blue","black"]
  1. find( )
Str.find("white")			'''返回第一次出现的位置'''#Out[1]: 15
Str.find("white",21)			'''从指定位置开始查找'''	#Out[2]: 27
Str.find("white",10,21)			'''在指定范围内查找'''	#Out[3]: 15
  1. rfind( ) #从字符串尾部向前查找
Str.rfind('b')				#Out[4]: 21
  1. index( ) #返回首次出现的位置
Str.index('bl')				#Out[5]: 10
  1. rindex( ) #返回最后一次出现的位置
Str.rindex('bl')			#Out[6]: 21
  1. count( ) #统计子字符串出现次数
Str.count('re')				#Out[7]: 2
  1. split( ) #以指定字符为分隔符,从字符串左端将其分割为多个字符串,若不指定分隔符,则以字符串中任何空白符号为分隔符
S = Str.split(",")			#Out[8]: ['red', 'green', 'blue', 'white', 'black', 'white']
  1. rsplit( ) #以指定字符为分隔符,从字符串右端将其分割为多个字符串,同 split( )
S = Str.rsplit("b")			#Out[9]: ['red,green,', 'lue,white,', 'lack,white']
  1. partition( ) #以左端开始的指定字符串为分隔符,将字符串分割为分隔符前字符串、分隔符字符串、分隔符后字符串三部分。若指定分隔符不在字符串中,则返回原字符串和两个空字符串
S = Str.partition(',')			#Out[10]: ('red', ',', 'green,blue,white,black,white')
  1. rpartition( ) #以左端开始的指定字符串为分隔符,同 partition( )
S = Str.rpartition(',')			#Out[11]: ('red,green,blue,white,black', ',', 'white')
  1. join( ) #将列表中的多个字符串进行连接,并在相邻字符串之间插入指定字符。运算符“+”也可连接字符,但是效率较低
sep = ",*"
S = sep.join(LIS)			#Out[12]: 'red,*green,*blue,*black'
  1. lower( ) #将字符串转换为小写字符串
S = STR.lower()				#Out[13]: 'a dream is a wish your heart made'
  1. upper( ) #将字符串转换为大写字符串
S = STR.upper() 			#Out[14]: 'A DREAM IS A WISH YOUR HEART MADE'
  1. capitalize( ) #将字符串首字母转换为大写
S = STR.capitalize()			#Out[15]: 'A dream is a wish your heart made'
  1. title( ) #将每个单词的首字母转换为大写
S = STR.title()				#Out[16]: 'A Dream Is A Wish Your Heart Made'
  1. swapcase( ) #字符串中的字母大小写互换
S = STR.swapcase()			#Out[17]: 'a dREAM IS A wISH YOUR hEART MADE'
  1. replace( ) #替换字符串中指定的所有字符或字符串,每次只能替换一个字符或字符串
S = Str.replace("white","*black")	#Out[18]:'red,green,blue,*black,black,*black'
  1. maketrans( ) #生成字符映射表
table = ''.maketrans("rgbw,","@$&%*")	#Out[19]: {114: 64, 103: 36, 98: 38, 119: 37, 44: 42}
  1. translate( ) #根据字符映射表替换字符串中的字符
S = Str.translate(table)		#Out[20]: '@ed*$@een*&lue*%hite*&lack*%hite'
  1. strip( ) #删除字符串两端连续的指定字符,若没指定则默认空白字符
S = Str.strip("re")			#Out[21]: 'd,green,blue,white,black,whit'
  1. rstrip( ) #删除字符串右端连续的指定字符,同strip( )
S = Str.rstrip("ret")			#Out[22]: 'red,green,blue,white,black,whi'
  1. lstrip( ) #删除字符串左端连续的指定字符,同strip( )
S = Str.lstrip("ret")			#Out[23]: 'd,green,blue,white,black,white'
  1. eval( ) #尝试把任意字符串转换为Python表达式并求值
eval("3*(67*9+70)")			#Out[24]: 2019
  1. 关键字 in #用 in 或者 not in 判断一个字符串是否出现在另一个字符串中
"gree" in Str				#Out[25]: True
"e,wh" not in Str			#Out[26]: False
  1. startswith( ) #判断字符串是否以指定字符串开始,可限定检测范围
Str.startswith('red',0,3)		#Out[27]: True
  1. endswith( ) ##判断字符串是否以指定字符串结束,可限定检测范围
Str.endswith('te',10,20)		#Out[28]: True
  1. isalnum( ) #检测字符串是否为字母或数字字符
'a1b2c3'.isalnum()			#Out[29]: True
  1. isalpha( ) #检测字符串是否为字母
'1a2b3c'.isalpha()			#Out[30]: False
  1. isdigit( ) #检测字符串是否为数字字符
'12x34'.isdigit()			#Out[31]: False
  1. isspace( ) #检测字符串是否为空白字符
'	'.isspace()			#Out[32]: True
  1. isupper( ) #检测字符串是否为大写字母
'ASDxDSA'.isupper()			#Out[33]: False
  1. islower( ) #检测字符串是否为小写字母
'adssda'.islower()			#Out[34]: True
  1. center( ) #返回指定长度的字符串,原字符串居中
'*PixieHollow*'.center(24)		#Out[35]: '     *PixieHollow*      '
  1. ljust( ) #返回指定长度的字符串,原字符串居左
'*PixieHollow*'.ljust(24)		#Out[36]: '*PixieHollow*           '
  1. rjust( ) #返回指定长度的字符串,原字符串居右
'*PixieHollow*'.rjust(24)		#Out[37]: '           *PixieHollow*'

正则表达式

正则表达式由元字符及其不同组合来构成。通过巧妙的构造正则表达式可以匹配任意字符串,并完成复杂的字符串处理任务。

正则表达式常用元字符

元字符说明元字符说明
.匹配除换行符以外的任意单个字符*匹配位于*之前的字符或子模式的0次或多次出现
+匹配位于+之前的字符或子模式的1次或多次出现-用在[ ]之内用来表示范围
|匹配位于|之前或之后的字符^匹配行首,匹配以^后面的字符开头的字符串
$匹配行尾,匹配以$之前的字符结束的字符串?匹配位于“?”之前的0个或1个字符。当此字符紧随任何其它限定符(*、+、?、{n}、{n,}、{n,m})之后时,匹配模式是“非贪心”的。“非贪心”模式匹配搜索到的、尽可能短的字符串,而默认的“贪心”模式匹配搜索到的、尽可能长的字符串。
|表示位于\之后的为转义字符\numnum为正整数,匹配两个连续的字符
\f换页符匹配\n换行符匹配
\r匹配一个回车符\b匹配单词头或单词尾
\B与\b含义相反\d匹配任何数字,相当于[0 - 9]
\D与\d含义相反,相当于[^0 - 9]\s匹配任何空白字符
\S与\s含义相反\w匹配任何数字、字母以及下划线
\W与\w含义相反()将位于()内的内容作为一个整体来对待
{}按{}中的次数进行匹配[]匹配位与[]中的任意一个字符
[^xyz]反向字符集,匹配处x、y、z之外的任何字符[a - z]字符范围,匹配指定范围内的任何字符
[^a - z]反向范围字符,匹配除小写英文字母之外的任何字符

re模块常用方法

方法说明
compile(pattern[,flags])创建模式对象
search(pattern,string[,flags])在整个字符串中寻找模式,返回match对象或None
match(pattern,string[,flags])从字符串的开始处匹配模式,返回match 对象或None
findall(pattern,string[,flags])列出字符串中模式的所有匹配项
split(pattern,string[,maxsplit = 0])根据模式匹配项分割字符串
sub(pat,repl,string[,count = 0])将字符串中所有pat的匹配项用repl替换
escape(string)将字符串中所有特殊正则表达式字符转义

子模式扩展语法

语法说明
(?P< groupname >)为子模式命名
(?iLmsux)设置匹配标志,可以是几个字母的组合,每个字母含义与编译标志相同
(?:…)匹配但不捕获该匹配的子表达式
(?P = groupname)表示在此之前的命名为 groupname 的子模式
(?#…)表示注释
(?=…)用于正则表达式之后,如果=后的内容在字符串中出现则匹配,不返回=之后的内容
(?!..)用于正则表达式之后,如果!后的内容在字符串中不出现则匹配,不返回!之后的内容
(?<=…)用于正则表达式之前,与(?=…)含义相同
(?<!..)用于正则表达式之前,与(?!..)含义相同
== ---------------------------------------------------------华丽的分割线---------------------------------------------------------==
  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值