由字符组成的序列,可以用单引号或双引号括起来。
1、通过下标获取字符串的字符
1.1、获取单个字符
若要获取字符串中某一个字符,可以通过 字符串名[index] 索引下标的方式获取。
索引的初始值为0,最大值为字符串长度-1。
切记,索引值不能超过字符串长度-1,否则会报错。
str1 = "My name is sony"
#获取长度
length_str1 = len(str1)
print(length_str1)
#获取第一个字符
first_index = str1[0]
print(first_index)
#反方向取最后一个字符
last_index = str1[-1]
print(last_index)
字符串的下标可为正,也可为负。并且,符号只是取字符方向的不同,正数从头开始取,负数从尾部开始取。
如:字符串:MyFStr
字符串 | M | y | F | S | t | r |
---|---|---|---|---|---|---|
正 | 0 | 1 | 2 | 3 | 4 | 5 |
负 | -6 | -5 | -4 | -3 | -2 | -1 |
1.2、获取多个字符
若要获取一个字符串中的一段字符,可使用切片进行获取。
切片的格式为:[起始位置:结束位置:步长]。且,切片的两个位置是前闭后开:[起始位置, 结束位置)
#切片
str1 = "This is an example"
#获取从2,5的字符串
str2 = str1[2:5:1]
print(str2)
str3 = str1[2:5]
print(str3)
#下标带负数的
str2 = str1[0:-7:]
print(str2)
#步长决定了取值方向
str2 = str1[-1:-7:-1]
print(str2)
str3 = str1[1:7:-1]
str4 = str1[7:1:-1]
print(str3)
print(str4)
起始位置和结束位置可为正,为负。步长的正负决定了取值的方向。取值方向与起始、结束位置有冲突,会导致最终的结果为空。
2、通过Python自带的字符串函数操作字符串
2.1、find和rfind
find:find(substring, start, end)
substring:待查找的子字符串。
start:开始查找的位置。(可选)
end:结束查找的位置。(可选)
结果:子字符串存在,返回第一个子字符串下标索引。子字符串不存之,返回-1。
示例:只输入待查找的子字符串。
str1 = "My name is sony sony"
str2 = "sony"
index_str1 = str1.find(str2)
print(index_str1)
示例:带范围的查找。
#带范围的查找
str1 = "My name is sony sony"
str2 = "sony"
index_str1 = str1.find(str2,14)
print(index_str1)
示例:查找不到。
#查找不到
str1 = "My name is sony sony"
str2 = "lucky"
index_str1 = str1.find(str2)
print(index_str1)
rfind:类似于find,不过是从右向左查找。
示例:查找带有多个子字符串。
str1 = "My name is sony sony"
str2 = "sony"
index_str1 = str1.rfind(str2)
print(index_str1)
2.2、index和rindex
index:类似于find方法。区别在于:当查找不到待查找子字符串时,会报错。
示例:
#index方法
str1 = "My name is sony sony"
str2 = "sony"
index_str1 = str1.index(str2)
print(index_str1)
str2 = "lucky"
index_str1 = str1.index(str2)
print(index_str1)
rindex:类似于rfind。区别:查找不到会报错。
示例:
str1 = "My name is sony sony"
str2 = "sony"
index_str1 = str1.rindex(str2)
print(index_str1)
str2 = "lucky"
index_str1 = str1.rindex(str2)
print(index_str1)
2.3、startswith和endswith
startwith:判断是否以某个子字符串开头,返回值为布尔值。
示例:
str1 = "My name is sony sony"
str2 = "My"
print(str1.startswith(str2))
str2 = "sony"
print(str1.startswith(str2))
endwith:判断是否以某个子字符串结尾,返回值为布尔值。
示例:
str1 = "My name is sony sony"
str2 = "My"
print(str1.endswith(str2))
str2 = "sony"
print(str1.endswith(str2))
2.4、isalpha、isdigit、isalnum和isspace
isalpha:判断字符串是否全是字母。
示例:
str1 = "adadaafafa"
str2 = "12efafsaf"
print(str1.isalpha())
print(str2.isalpha())
isdigit:判断字符串是否全是数字。
示例:
str1 = "adadaafafa"
str2 = "12112414"
print(str1.isdigit())
print(str2.isdigit())
isalnum:判断字符串是否全是字母或数字。
示例:
str1 = "abcd1234"
str2 = "afafaf"
str3 = "1231"
print("1"+str(str1.isalnum()))
print("2"+str(str2.isalnum()))
print("3"+str(str3.isalnum()))
isspace:判断字符串是否全是空格。
示例:
str1 = " "
str2 = ""
str3 = " 12"
print("1"+str(str1.isspace()))
print("2"+str(str2.isspace()))
print("3"+str(str3.isspace()))
2.5、count
count:统计某个子字符串出现次数。
示例:
str1 = "My name is sony sony"
print(str1.count("sony"))
2.6、replace
replace:替换原字符串中的子字符串。
格式:replace(sub,new_sub,max).
sub:待替换子字符串。
new_sub:替换的新字符串。
max:最大替换个数。(可选)
结果:返回一个新字符串。
示例:
str1 = "My name is sony sony"
str2 = str1.replace("sony","new_sony")
str3 = str1.replace("sony","new_sony",1)
print(str2)
print(str3)
2.7、capitalize、title、lower和upper
capitalize:将字符串中的第一个字符大写。
示例:
str1 = "this is a test"
str2 = str1.capitalize()
print(str2)
title:将字符串的每个单词首字母大写。
示例:
str1 = "this is a test"
str2 = str1.title()
print(str2)
lower:将全部字符改为小写。
示例:
str1 = "THIS IS A TEST"
str2 = str1.lower()
print(str2)
upper:全部字符改为大写。
示例:
str1 = "THIS IS A TEST"
str2 = str1.lower()
str3 = str2.upper()
print(str3)
2.8、join方法
join:使用字符串来连接join函数中参数的每一个元素。
结果:返回一个新字符串。
示例:
str1 = "This is an example"
str2 = str1.join("--")
str3 = "--".join(str1)
print(str2)
print(str3)
2.9、split和splitlines
split:以给定的字符分割原字符串。
结果:无论给定的字符存不存在字符串中,都返回一个列表。
示例:
str1 = "Thisisanexample"
list1 = str1.split("is")
list2 = str1.split("hello")
print(list1)
print(list2)
splitlines:按照\n行分割字符串。
结果:返回一个列表。
示例:
str1 = "This\nis\nan\nexample"
str2 = "Thisisanexample"
list1 = str1.splitlines()
list2 = str2.splitlines()
print(list1)
print(list2)
2.10、 partition和rpartition
partition:按照给定的字符,将原字符串分为三部分。
结果:返回一个元组,并且无论有没有给定字符,一定有三部分。
示例:
str1 = "This is an example"
tuple1 = str1.partition("is")
tuple2 = str1.partition("hello")
print(tuple1)
print(tuple2)
2.11、strip、lstrip和rstrip
strip:去掉两边的空格或给定的字符串。
结果:返回一个新字符串。
示例:
str1 = " This is an example"
str2 = str1.strip()
str3 = str1.strip("le")
print(str1)
print(str2)
print(str3)
lstrip和rstrip:去掉字符串左边和右边空格或给定的字符串。
结果:返回新字符串。
示例:
str1 = " This is an example "
print(str1)
print(str1.lstrip())
print(str1.rstrip())