标签:检索 入门 Python 笔记 print 参数 str 字符串
声明:《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 | 匹配单词的开始或结尾(单词的分解符通常是空格、标点符号或换行符) |
限定符
如果想要匹配特定数量的数字,正则表达式为我们提供了限定符(指定数量的字符)来实现该功能
未完待补充…
标签:检索,入门,Python,笔记,print,参数,str,字符串 来源: https://blog.csdn.net/BuLingLings/article/details/108983094
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。