目录
<14>isalpha/isdigit/isalnum/isspace
字符串类型
1.字符串介绍
- 字符串或串(String)是由数字/字母/下划线组成的一串字符。
- 字符串是由成对的单引号(‘)或成对的双引号(“)或三个单(双)引号括起来的字符内容。
一般记为:
var_str = “a1a2a3...an”(n>=0)
2.下标和切片
a.字符串下标
字符串里面的每个字母都是有索引的,字符串实际上就是字符的数组,所以也支持下标索引。
索引顺序有两种:
正序:从左到右索引默认0开始,最大范围是字符串长度-1
反序:从右到作索引默认-1开始,最大范围是字符串开头
如下:
|
H |
E |
L |
L |
O |
正序 |
0 |
1 |
2 |
3 |
4 |
反序 |
-5 |
-4 |
-3 |
-2 |
-1 |
正序:
输出结果:
反序,反之。
注意:
字符串的运算:
+:属于字符串的拼接,将+号前后两个字符串拼接成一个新的字符串
*:字符串重复输出两次
in/ not in判断字符串或字符是否在数据中返回True/False
输出结果:
b.字符串的切片
何为切片?
切片是指对操作的对象截取其中一部分的操作。字符串、列表、元组都支持切片操作。
切片格式: [start : end : step]
注意:
选取区间属于左闭右开型,即从”start”位开始,到”end”位的前一位结束(不包含end位本身),step步长每次跳过多少位取值
start不写默认从0开始,end不写默认字符串长度(len(当前字符串))
- [:] 提取开头(默认位置0)到结尾(默认位置-1)的整个字符串
- [start:] 从start开始到结尾
- [:end] 从0开始到end-1结尾
- [start:end] 从start开始到end-1结尾
输出结果:
3.字符串常见操作
以字符串var_str = “hello world! My name is Zhang XiaoMing.”为例
<1> find和rfind
检测字符串中是否包含指定的字符串,如果包含返回开始索引值;否则,返回-1。
var_str.find(var_find_str, start, end)
默认start为0,end为var_str的长度
注意: find属于从左端开始查找,而rfind属于从右端开始查找。
问题:
查找字符串var_str中是否包含name字符串?
分析:
以前我们可以使用in/not in,我们试试看可以不!
A.先创建变量var_str并赋值,创建查找变量var_find_str并赋值
B.使用in/not in判断,var_find_str是否在var_str中,返回结果True/False
C.打印返回结果
输出结果:
证明此方案可行。有没有更方便的方案呢?
使用find()方法来查找,特点是可以查找指定范围。
案例:
输出结果:
特定范围搜索:
案例:
输出结果:
<2> index和rindex
var_str.index(var_find_str, start, end)
跟find()方法一样,只不过如果var_find_str不在 var_str中会报一个异常:
注意: index()与find()方法一样都是从左端开始;rindex()与rfind()方法一样从右段开始。
案例:
输出结果:
结论:
16是我们[5,20)搜索结果,当搜索范围[5,18)时不在此范围了,出现了ValueError错误,此错误说明var_find_str没有被发现。 又多一个错误(NameError)
<3>count
var_str.count(var_find_str, start, end)
返回var_find_str在start和end之间出现的次数。
案例:
返回结果:
<4>replace
var_str.replace(
var_old_str, 旧字符
var_new_str, 新字符
var_str.count(var_old_str) 旧字符出现次数,也是新字符替换次数
)
把var_str中的var_old_str替换成var_new_str,如果count指定,则替换不超过count次数。
案例:
输出结果:
<5>upper和lower
字符串的大小写切换。
Upper()方法,将所有字符都转换成大写。
Lower()方法,将所有字符都转换成小写。
案例:
输出结果:
<6>split
var_str.split(
str, str为分隔符切片
num 分割的数量为num + 1
)
以str为分隔符切片var_str,如果num有值,则仅分割num+1个子字符串。
案例:
输出结果:
<7>capitalize
var_str.capitalize()
把字符串的第一个字符大写。
案例:
输出结果:
<8> title
var_str.title()
把字符串的每个单词首字母大写。
案例:
输出结果:
<9>startswith和endswith
var_str.startswith(obj)
检测字符串是否以obj开头,是返回True,否返回False。
var_str.endswith(obj)
检测字符串是否以obj结尾,是返回True,否返回False。
案例:
输出结果:
<10>ljust/rjust/center
var_str.ljust(width) width:字符串长度
返回一个原字符串左对齐,并使用空格填充至长度widthd的新字符串。
var_str.rjust(width) width:字符串长度
返回一个原字符串右对齐,并使用空格填充至长度widthd的新字符串。
var_str.center(width) width:字符串长度
返回一个原字符串居中对齐,并使用空格填充至长度widthd的新字符串。
案例:
输出结果:
<11>lstrip/rstrip/strip
var_str.lstrip()
删除字符串左端空白字符
var_str.rstrip()
删除字符串右端空白字符
var_str.strip()
删除字符串两端空白字符
案例:
输出结果:
<12>partition和rpartition
var_str.partition(str)
把从左端开始var_str分为三部分:str前,str,str后;
var_str.rpartition(str)
把从右端开始var_str分为三部分:str前,str,str后;
案例:
输出结果:
<13>splitlines
var_str.splitlines()
按照行分隔,返回一个包含各行作为元素的列表
案例:
输出结果:
<14>isalpha/isdigit/isalnum/isspace
var_str.isalpha()
判断字符串中所有字符是否都是字母,是返回True,否返回False
var_str.isdigit()
判断字符串中所有字符是否都是数字,是返回True,否返回False
var_str.isalnum()
判断字符串是否由字母和数字构成,是返回True,否返回False
var_str.isspace()
判断字符串是否只包含空格,是返回True,否返回False
案例:
输出结果:
<15>join
var_str.join(sep)
以 var_str作为分隔符,将 seq 中所有的元素(的字符串表示)合并为一个新的字符串。
案例:
输出结果: