声明:《Python 从入门到项目实践》7-章节 个人学习笔记
在Python开发过程中,为了实现某项功能,经常需要对某些字符串进行特殊处理
比如拼接字符串、截取字符串、格式化字符串等
拼接字符串
在Python中,使用 “+” 号运算符可完成对多个字符串的拼接从而生成一个新的字符串对象
str1 = '人生苦短' str2 = '我用Python' print(str1 + str2) # 人生苦短我用Python
在Python中,字符串不允许直接与其他类型的数据拼接,否则抛出异常
str3 = '计算机' num = 1024 print(str3 + num) # TypeError: unsupported operand type(s) for +: 'int' and 'str'
在Python中,可以通过将整数转换成字符串,然后再与字符串进行拼接
str3 = '计算机' num = 1024 print(str3 + str(num)) # 计算机1024
计算字符串长度
在Python中,提供len()函数计算字符串的长度
通过len()函数计算字符串的长度时,不区分中文、英文和数字,所有字符都认为是一个
""" 语法格式: len(string) 参数说明: string:指定要进行长度统计的字符串 """ str4 = '人生苦短,我用Python!' print(len(str4)) # 14
截取字符串
在Python中,由于字符串也属于序列,所以要截取字符串,可以采用切片的方法实现
""" 语法格式: string[start : ent : step] 参数说明: string:表示要截取的字符串 start:表示要截取的第一个字符串索引(包括该字符),默认为0 end:表示要截取的最后一个字符串索引(不包括该字符),默认为字符串的长度 step:步长,默认为1 """ str5 = '人生苦短,我用Python!' # 截取第一个字符 print(str5[1]) # 生 # 从第6个字符截取 print(str5[5:]) # 我用Python! # 从左边开始截取5个字符 print(str5[:5]) # 人生苦短, # 截取从第3个到第5个字符 print(str5[2:5]) # 苦短, # 指定的索引不存在,抛出异常 print(str5[15]) # IndexError: string index out of range
分割字符串
在Python中,字符串对象的split()方法可以实现对字符串分割
在使用split()方法时,如果不指定参数,默认采用空白符进行分割
""" 语法格式: str.split[sep, maxsplit] 参数说明: str:表示要进行分割的字符串 sep:用于指定分隔符,可以是多个字符,默认为None maxsplit:可选参数,用于指定分割的次数 返回值:分割后的字符串列表 """ str6 = '人 生 苦 短, >>> 我用Python!' # 采用默认分隔符进行分割 print(str6.split()) # ['人', '生', '苦', '短,', '>>>', '我用Python!'] # 通过 , 分割字符串 print(str6.split(',')) # ['人 生 苦 短', ' >>> 我用Python!'] # 通过多个字符进行分割 print(str6.split('>>>')) # ['人 生 苦 短, ', ' 我用Python!']
检索字符串
在Python中,字符串对象提供了count()、find()、index()、startwith()、endwith()用于字符串查找
count()方法用于检索指定字符串在另外一个字符串出现的次数
如果检索的字符串不存在,则返回0;存在则返回出现的次数
""" 语法格式: str.count(sub [, start [, end ]]) 参数说明: str:表示原字符串 sub:表示要检索的子字符串 start:可选参数,表示检索范围的起始位置的索引,默认从头开始检索 end:可选参数,表示检索范围的结束位置的索引,默认一直检索到结尾 """ # 检索 > 出现的次数 print(str7.count('>')) # 3 # 检索不存在的情况 print(str7.count('KT')) # 0
find()方法用于检索是否包含指定的子字符串
如果检索的字符串不存在,则返回-1;如果包含则返回首次出现该子字符串时的索引
""" 语法格式: str.find(sub [, start [, end ]]) 参数说明: str:表示原字符串 sub:表示要检索的子字符串 start:可选参数,表示检索范围的起始位置的索引,默认从头开始检索 end:可选参数,表示检索范围的结束位置的索引,默认一直检索到结尾 """ str8 = 'ABCDAABCD' # 检索D的在字符串中首次出现的索引 print(str8.find('D')) # 3 # 检索不存在的情况 print(str8.find('E')) # -1
index()方法用于返回子字符串在原字符串中首次出现的位置索引
当指定的字符串不存在时会抛出异常
""" 语法格式: str.index(sub [, start [, end ]]) 参数说明: str:表示原字符串 sub:表示要检索的子字符串 start:可选参数,表示检索范围的起始位置的索引,默认从头开始检索 end:可选参数,表示检索范围的结束位置的索引,默认一直检索到结尾 """ str9 = 'ABCDAABCD' # 检索D的首次索引 print(str9.index('D')) # 3 # 检索不存在的情况 print(str9.index('E')) # ValueError: substring not found
startwith()方法用于检索字符串是否以指定字符串开头
如果是则返回True,否则返回False
""" 语法格式: str.startswith(perfix [, start [, end ]]) 参数说明: str:表示原字符串 perfix:表示要检索的子字符串 start:可选参数,表示检索范围的起始位置的索引,默认从头开始检索 end:可选参数,表示检索范围的结束位置的索引,默认一直检索到结尾 """ str10 = 'ABCDAABCD' # 检索D的首次索引 print(str10.startswith('A')) # True # 检索不存在的情况 print(str10.startswith('E')) # False
endwith()方法用于检索字符串是否以指定字符串结尾
如果是则返回True,否则返回False
""" 语法格式: str.endswith(perfix [, start [, end ]]) 参数说明: str:表示原字符串 perfix:表示要检索的子字符串 start:可选参数,表示检索范围的起始位置的索引,默认从头开始检索 end:可选参数,表示检索范围的结束位置的索引,默认一直检索到结尾 """ str10 = 'ABCDAABCD' # 检索D的首次索引 print(str10.endswith('D')) # True # 检索不存在的情况 print(str10.endswith('E')) # False
字母的大小写转换
在Python中,字符串对象提供了lower()和upper()方法进行字母的大小写转换
lower()方法用于将字符串中的大写字母转换为小写字母
""" 语法格式: str.lower() 参数说明: str:表示要进行转换的字符串 """ str11 = 'ABCDAABCD' # 将大写转成小写 print(str11.lower()) # abcdaabcd
upper()方法用于将字符串中的大写字母转换为小写字母
""" 语法格式: str.upper() 参数说明: str:表示要进行转换的字符串 """ str12 = 'abcdaabcd' # 将小写转成大写 print(str12.upper()) # ABCDAABCD
去除字符串中的空格和特殊字符
在Python中,字符串对应提供了strip()、rstrip()、lstrip()方法可以实现去掉字符串中的空格或特殊字符
strip()方法用于去掉字符串左、右两边的空格或特殊字符
""" 语法格式: str.strip([chars]) 参数说明: str:表示要去掉空格或特殊字符的字符串 chars:可选参数,用于指定要去除的字符 """ str13 = ' abcdaabcd ' # 去除字符串两侧空格 print(str13.strip()) # abcdaabcd # 去掉字符串两侧的@ str14 = '@abcdaabcd@' print(str14.strip('@')) # abcdaabcd
rstrip()方法用于出掉字符串右侧的空格或特殊字符
""" 语法格式: str.rstrip([chars]) 参数说明: str:表示要去掉空格或特殊字符的字符串 chars:可选参数,用于指定要去除的字符 """ str15 = 'abcdaabcd ' # 去除字符串右测的空格 print(str15.rstrip()) # abcdaabcd # 去掉字符串右侧的@ str16 = '@abcdaabcd@' print(str16.rstrip('@')) # @abcdaabcd
lstrip()方法用于出掉字符串左侧的空格或特殊字符
""" 语法格式: str.lstrip([chars]) 参数说明: str:表示要去掉空格或特殊字符的字符串 chars:可选参数,用于指定要去除的字符 """ str17 = ' abcdaabcd' # 去除字符串左测的空格 print(str17.lstrip()) # abcdaabcd # 去掉字符串左侧的@ str18 = '@abcdaabcd@' print(str18.lstrip('@')) # abcdaabcd@
格式化字符串
在Python中,可以使用"%"操作符或使用字符串对象的format()方法实现格式化字符串
使用 % 实现格式化字符串
""" 语法格式: '%[-][+][0][m][.n]格式化字符' %exp 参数说明: -: 可选参数, 用于指定左对齐(正数前方无负号,负数前方加负号) +:可选参数, 用于指定右对齐(正数前方无负号,负数前方加负号) 0: 可选参数, 表示右对齐(正数前方元符号, 负数前方加负号; 用0填充空白处,一般与m参数配合使用) m: 可选参数, 表示占有宽度 .n: 可选参数, 表示小数点后保留的位数 格式化字符: 用于指定类型 exp: 要转换的项; 如果要指定的项有多个, 以元组的形式进行指定 """ # %s --> 字符串(采用str()显示) print('%s笑哈哈' % 'BLL') # BLL笑哈哈 # %c --> 单个字符, 否则报TypeError: %c requires int or char print('%c笑哈哈' % 'L') # L笑哈哈 # %d 或者 %i --> 十进制整数 print('%d, %i' % (4, 6)) # 4, 6 # %x --> 十六进制整数 print('%x' % 15) # f # %f 或者 %F --> 浮点数 print('%f, %F' % (17.5, 20)) # 17.500000, 20.000000 # %r --> 字符串(采用repr()显示) print('%r笑哈哈' % 'BLL') # 'BLL'笑哈哈 # %o --> 八进制 print('%o' % 15) # 17 # %e --> 指数(基底为e) print('%e' % 15) # 1.500000e+01 # %E --> 指数(基底为E) print('%E' % 15) # 1.500000E+01 # %% --> 字符串% print('%d%%' % 18) # 18%
使用字符串对象的format()方法实现格式化字符串
在这里插入代码片
在处理字符串时,经常会有查询符合某些复杂规则的字符串的需求
正则表达式就是用于描述这些规则的工具;换句话来说,正则表达式就是记录文本规则的代码
行定位符
行定位符就是用来描述子串的边界。 “^” 表示行的开始;"$" 表示行的结尾
import re """ ^C : 判断字符串以C开头(从字符串的左边第一个开始匹配) """ str1 = 'China is powerful' print(re.findall('^C', str1)) # ['C'] """ ul$ : 判断字符串以字母ul结尾(从字符串的右边第一个开始匹配) """ str2 = 'China is powerful' print(re.findall('ul$', str2)) # ['ul']
元字符
除了上面介绍的 ^ 和 $ 外,正则表达式里还有更多的元字符
代码 | 说明 |
---|---|
.(点) | 匹配除换行符以外的任意字符 |
\w | 匹配字母、数字、下划线或汉字 |
\W | 匹配除字母、数字、下划线或汉字以外的字母 |
\s | 匹配单个的空白字符(包括Tab键和换行符) |
\S | 除单个的空白字符(包括Tab键和换行符)以外的所有字符 |
\d | 匹配数字 |
\b | 匹配单词的开始或结尾(单词的分解符通常是空格、标点符号或换行符) |
限定符
如果想要匹配特定数量的数字,正则表达式为我们提供了限定符(指定数量的字符)来实现该功能
未完待补充…