Python字符串
认识字符串
字符串是 Python 中最常用的数据类型。我们一般使用引号来创建字符串。创建字符串很简单,只要为变量分配一个值即可。
a = 'hello world'
b = "abcdefg"
print(type(a))
print(type(b))
- 控制台显示结果为
<class 'str'>
, 即数据类型为str(字符串)。
字符串特征
一对引号字符串
' '
或" "
- 双引号内可包含单引号,单引号内可包含双引号
- 双引号内若要有双引号,需要
\"
转义 - 单引号内若要有单引号,需要
\'
转义
name="Lily"
age='17'
words="Lily just said \"Hi,I'm Lily\""
speak='Lily just said "Hi,I\'m Lily"'
print(name)
print(age)
print(words)
print(speak)
三引号字符串
- 内部支持换行
a = ''' I am Jack,
nice to meet you! '''
b = """ I am Rose,
nice to meet you! """
print(a)
print(b)
下标索引
获取字符串长度
len(str)
返回字符串str的长度(length)
下标
“下标”
又叫“索引”
(index),就是编号。比如火车座位号,座位号的作用:按照编号快速找到对应的座位。同理,下标的作用即是通过下标快速找到对应的数据。- 字符串下标从0开始计数,即0代表第一个字符,依次对应,直到length-1,对应最后一个字符。
- 字符串下标也可以为负,-1代表最后一个元素,以此类推
- 索引符号:
[]
s="abcd"
print(s[0],s[1],s[2],s[3],s[-1],s[-2],s[-3],s[-4],sep=" ")
切片
- 切片(slice)是指对操作的对象截取其中一部分的操作。字符串、列表、元组都支持切片操作。
语法
string[begin:end:step]
- 依次取以begin(包含)到end(不包含end)间以step为步长的下标所对应的字符
- step可为负
- begin,end,step均可舍去不写,分别默认为0/-1,length-1,1,但要保留第一个冒号
- 返回一个新字符串
s="abcdefgh"
print(s[1:7:2])
print(s[5:1:-1])
print(s[1:4])
print(s[:])
常用操作方法
字符串的常用操作方法有查找、修改和判断三大类。
查找
所谓字符串查找方法即是查找子串在字符串中的位置或出现的次数。
find()
-
检测某个子串是否包含在这个字符串中,如果在返回这个子串开始的位置下标,否则则返回-1。
-
语法
string.find(substring, begin, end)
-
开始和结束位置下标可以省略,表示在整个字符串序列中查找。
-
string="aghshmoneyjsjsjsjj" print(string.find("money")) print(string.find("money",6,17))
index()
- 检测某个子串是否包含在这个字符串中,如果在返回这个子串开始的位置下标,否则则报异常。
- 语法
string.index(substring, begin, end)
- 开始和结束位置下标可以省略,表示在整个字符串序列中查找。
rfind()
- 和find()功能相同,但查找方向为右侧开始。
rindex()
- index()功能相同,但查找方向为右侧开始。
count()
-
返回某个子串在字符串中出现的次数
-
语法
string.count(substring,begin, end)
- 开始和结束位置下标可以省略,表示在整个字符串序列中查找。
string="111666666666666111"
print(string.count("6"))
print(string.count("6",4,11))
print(string.count("0"))
修改
- 所谓修改字符串,指的就是通过函数的形式修改字符串中的数据。因为字符串是不可变序列,所以不能通过索引切片赋值的方式来改变字符串内的子串。
replace()
-
替换字符串中的子串
-
返回一个新字符串,原字符串不发生改变
-
语法
string.replace(old_substring, new_substring, max_times)
max_times为最多替换的次数
如:
string="我恨学习,我爱摆烂"
print(string.replace("爱","恨"))
print(string.replace("恨","爱"))
print(string.replace("爱","恨").replace("恨","爱"))
print(string.replace("爱","恨").replace("恨","爱",1))
print(string)
split()
- 按照指定字符分割字符串,并返回一个字符串列表。
- 语法
string.split(sep, max_times)
sep为分割字符,max_times为最多分割的次数
- 分割后,sep会在分割返回的字符串数组中消失
如:
s="111-222-333-4"
print(s.split("-"))
print(s.split("-",2))
join()
-
用一个字符或子串合并字符串序列(如
split()
形成的列表),即是将多个字符串合并为一个新的字符串。 -
语法
sep.join(strings)
split()
的反操作
如:
s="111-222-333-4"
print(s)
s1=s.split("-")
print(s1)
print("*".join(s1))
capitalize()
string.capitalize()
- 将字符串第一个字符转换成大写。
- 其他字符转化为小写
title()
string.title()
- 将字符串每个单词首字母转换成大写。
lower()
string.lower()
- 将字符串中大写转小写。
upper()
string.lower
- 将字符串中小写转大写。
lstrip()
string.lstrip()
- 删除字符串左侧空白字符。
rstrip()
string.rstrip()
- 删除字符串右侧空白字符。
strip()
string.strip()
- 删除字符串两侧空白字符。
ljust()
string.ljust(width, fillchar)
- 返回一个左对齐,并使用指定字符fillchar(默认空格)填充至对应长度(width)的新字符串
rjust()
string.rjust(width, fillchar)
- 返回一个右对齐,并使用指定字符(默认空格)填充至对应长度 的新字符串
center()
string.center(width, fillchar)
- 返回一个居中对齐,并使用指定字符(默认空格)填充至对应长度 的新字符串
判断
- 所谓判断即是判断真假,返回的结果是布尔型数据类型:True 或 False。
startswith()
-
检查字符串是否是以指定子串开头,是则返回 True,否则返回 False。如果设置开始和结束位置下标,则在指定范围内检查。
-
语法
string.startswith(substring, begin, end)
endswith()
-
检查字符串是否是以指定子串结尾,是则返回 True,否则返回 False。如果设置开始和结束位置下标,则在指定范围内检查。
-
语法
string.endswith(substring, begin, end)
isalpha()
string.isalpha()
- 如果字符串至少有一个字符并且所有字符都是字母则返回 True, 否则返回 False。
isdigit()
string.isdight()
- 如果字符串只包含数字则返回 True 否则返回 False。
isalnum()
string.isalnum()
- 如果字符串至少有一个字符并且所有字符都是字母或数字则返 回 True,否则返回 False。
isspace()
string.isspace()
- 如果字符串中只包含空白,则返回 True,否则返回 False。