字符串
在Python中,字符串属于不可变序列类型,使用单引号、双引号、三单引号或三双引号作为界定符,不同界定符之间可相互嵌套。字符串操作包括比较、元素访问、切片、计数、格式化、查找、替换等。将字符串赋值给多个对象时,对于短字符串,内存中只有一个副本,多个对象共享。在python2.x中,字符串有 str 和 unicode 两种,基类都是 basestring 。在python3.x中,只提供 str 类型,程序源文件默认为 UTF-8 编码,全面支持中文(如: 中国 = {'富强':6,'民主':9,'文明':6,'和谐':9}
)
字符串格式化
’ | % | - | + | 0 | m | .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"]
find( )
Str.find("white") '''返回第一次出现的位置'''
Str.find("white",21) '''从指定位置开始查找'''
Str.find("white",10,21) '''在指定范围内查找'''
rfind( ) #从字符串尾部向前查找
Str.rfind('b')
index( ) #返回首次出现的位置
Str.index('bl')
rindex( ) #返回最后一次出现的位置
Str.rindex('bl')
count( ) #统计子字符串出现次数
Str.count('re')
split( ) #以指定字符为分隔符,从字符串左端将其分割为多个字符串,若不指定分隔符,则以字符串中任何空白符号为分隔符
S = Str.split(",")
rsplit( ) #以指定字符为分隔符,从字符串右端将其分割为多个字符串,同 split( )
S = Str.rsplit("b")
partition( ) #以左端开始的指定字符串为分隔符,将字符串分割为分隔符前字符串、分隔符字符串、分隔符后字符串三部分。若指定分隔符不在字符串中,则返回原字符串和两个空字符串
S = Str.partition(',')
rpartition( ) #以左端开始的指定字符串为分隔符,同 partition( )
S = Str.rpartition(',')
join( ) #将列表中的多个字符串进行连接,并在相邻字符串之间插入指定字符。运算符“+”也可连接字符,但是效率较低
sep = ",*"
S = sep.join(LIS)
lower( ) #将字符串转换为小写字符串
S = STR.lower()
upper( ) #将字符串转换为大写字符串
S = STR.upper()
capitalize( ) #将字符串首字母转换为大写
S = STR.capitalize()
title( ) #将每个单词的首字母转换为大写
S = STR.title()
swapcase( ) #字符串中的字母大小写互换
S = STR.swapcase()
replace( ) #替换字符串中指定的所有字符或字符串,每次只能替换一个字符或字符串
S = Str.replace("white","*black")
maketrans( ) #生成字符映射表
table = ''.maketrans("rgbw,","@$&%*")
translate( ) #根据字符映射表替换字符串中的字符
S = Str.translate(table)
strip( ) #删除字符串两端连续的指定字符,若没指定则默认空白字符
S = Str.strip("re")
rstrip( ) #删除字符串右端连续的指定字符,同strip( )
S = Str.rstrip("ret")
lstrip( ) #删除字符串左端连续的指定字符,同strip( )
S = Str.lstrip("ret")
eval( ) #尝试把任意字符串转换为Python表达式并求值
eval("3*(67*9+70)")
关键字 in #用 in 或者 not in 判断一个字符串是否出现在另一个字符串中
"gree" in Str
"e,wh" not in Str
startswith( ) #判断字符串是否以指定字符串开始,可限定检测范围
Str.startswith('red',0,3)
endswith( ) ##判断字符串是否以指定字符串结束,可限定检测范围
Str.endswith('te',10,20)
isalnum( ) #检测字符串是否为字母或数字字符
'a1b2c3'.isalnum()
isalpha( ) #检测字符串是否为字母
'1a2b3c'.isalpha()
isdigit( ) #检测字符串是否为数字字符
'12x34'.isdigit()
isspace( ) #检测字符串是否为空白字符
' '.isspace()
isupper( ) #检测字符串是否为大写字母
'ASDxDSA'.isupper()
islower( ) #检测字符串是否为小写字母
'adssda'.islower()
center( ) #返回指定长度的字符串,原字符串居中
'*PixieHollow*'.center(24)
ljust( ) #返回指定长度的字符串,原字符串居左
'*PixieHollow*'.ljust(24)
rjust( ) #返回指定长度的字符串,原字符串居右
'*PixieHollow*'.rjust(24)
正则表达式
正则表达式由元字符及其不同组合来构成。通过巧妙的构造正则表达式可以匹配任意字符串,并完成复杂的字符串处理任务。
正则表达式常用元字符
元字符 | 说明 | 元字符 | 说明 |
---|
. | 匹配除换行符以外的任意单个字符 | * | 匹配位于*之前的字符或子模式的0次或多次出现 |
+ | 匹配位于+之前的字符或子模式的1次或多次出现 | - | 用在[ ]之内用来表示范围 |
| | 匹配位于|之前或之后的字符 | ^ | 匹配行首,匹配以^后面的字符开头的字符串 |
$ | 匹配行尾,匹配以$之前的字符结束的字符串 | ? | 匹配位于“?”之前的0个或1个字符。当此字符紧随任何其它限定符(*、+、?、{n}、{n,}、{n,m})之后时,匹配模式是“非贪心”的。“非贪心”模式匹配搜索到的、尽可能短的字符串,而默认的“贪心”模式匹配搜索到的、尽可能长的字符串。 |
|表示位于\之后的为转义字符 | \num | num为正整数,匹配两个连续的字符 | |
\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 的子模式 |
(?#…) | 表示注释 |
(?=…) | 用于正则表达式之后,如果=后的内容在字符串中出现则匹配,不返回=之后的内容 |
(?!..) | 用于正则表达式之后,如果!后的内容在字符串中不出现则匹配,不返回!之后的内容 |
(?<=…) | 用于正则表达式之前,与(?=…)含义相同 |
(?<!..) | 用于正则表达式之前,与(?!..)含义相同 |
== ---------------------------------------------------------华丽的分割线---------------------------------------------------------== | |