4.4 转换为字符串 str()
4、str()
函数
我们可以使用 str() 函数将列表、元组、字典、集合和区间等对象转换为字符串,以下将会一一介绍:
- 将列表转换为字符串
list1 = ['a', 'b', 'c'] print(type(str(list1))) print(str(list1))
<class 'str'> ['a', 'b', 'c']
- 将元组转换为字符串
tuple1 = ('A', 'B', 'C') print(type(str(tuple1))) print(str(tuple1))
<class 'str'> ('A', 'B', 'C')
- 将字典转换为字符串
dict1 = {'name': 'pink'} print(type(str(dict1))) print(str(dict1))
<class 'str'> {'name': 'pink'}
- 将集合转换为字符串
set1 = {'name', 'gender'} print(type(str(set1))) print(str(set1))
<class 'str'> {'name', 'gender'}
- 将区间转换为字符串
range1 = range(0, 10) print(type(str(range1))) print(str(range1))
<class 'str'> range(0, 10)
4.5 字符串最大/小字符 max()、min()
5、max()
函数和min()
函数
max() 函数的作用是返回字符串中最大的字符。min() 函数的作用是返回字符串中最小的字符。
str_m = 'AazZ' print(max(str_m)) print(min(str_m))
z A
4.6 删除字符串 del
在Python中,del 函数并不支持删除字符串中的单个字符,但我们可以使用 del 函数删除整个字符串:
str1 = 'Hello Python' del str1 print(str1)
当我们使用 del 函数删除某字符串后,如果再使用 print() 函数打印输出时,会报错
NameError: name 'str1' is not defined
,表明该字符串未被定义。
5、内置方法
5.1 转换
5.1.1 字符(串)转换 capitalize()、casefold()、lower()、upper()、title()、swapcase()
1、 capitalize()
方法
capitalize() 将字符串的第一个字母变成大写,其他字母变小写。
语法
string.capitalize()
参数值
无参数
实例
str1 = 'hello python' print(str1.capitalize())
Hello python
2、casefold()
方法
casefold() 方法返回一个字符串,其中所有字符均为小写。
语法
string.casefold()
参数值
无参数
实例
str1 = 'Hello Python' print(str1.casefold())
hello python
此方法与 lower() 方法相似,但是 casefold() 方法更强大,更具攻击性,这意味着它将更多字符转换为小写字母,并且在比较两个用 casefold() 方法转换的字符串时会找到更多匹配项。
3、lower()
方法
lower() 方法转换字符串中所有大写字符为小写(符号和数字将被忽略)。
语法
string.lower()
参数值
无参数
实例
str1 = 'Hello Python' print(str1.lower())
hello python
4、upper()
方法
upper() 方法将字符串中的小写字母转为大写字母(符号和数字将被忽略)。
语法
string.upper()
参数值
无参数
实例
str1 = 'Hello Python' print(str1.upper())
HELLO PYTHON
5、title()
方法
title() 方法返回"标题化"的字符串,就是说所有单词的首个字母转化为大写,其余字母均为小写。
语法
string.title()
参数值
无参数
实例
str1 = 'HELLO Python' print(str1.title())
Hello Python
6、swapcase()
方法
swapcase() 方法用于对字符串的大小写字母进行转换,即将大写字母转换为小写字母,小写字母会转换为大写字母。
语法
string.swapcase()
参数值
无参数
实例
str1 = 'Hello Python' print(str1.swapcase())
hELLO pYTHON
5.1.2 判断大小写 islower()、isupper()、istitle()
1、islower()
方法
islower() 方法检测字符串是否由小写字母组成。
语法
string.islower()
参数值
无参数
str1 = 'Hello Python' print(str1.islower())
False
如果所有字符均为小写,则 islower() 方法返回 True,否则返回 False。不检查数字、符号和空格,仅检查字母字符。
2、isupper()
方法
isupper() 方法检测字符串中所有的字母是否都为大写。
语法
string.isupper()
参数值
无参数
实例
str1 = 'Hello Python' print(str1.isupper())
False
如果所有字符均大写,则 isupper() 方法返回 True,否则返回 False。不检查数字、符号和空格,仅检查字母字符。
3、istitle()
方法
istitle() 方法检测字符串中所有的单词拼写首字母是否为大写,且其他字母为小写。
语法
string.istitle()
参数值
无参数
实例
str1 = 'Hello Python' print(str1.istitle())
True
如果文本中的所有单词均以大写字母开头,而单词的其余部分均为小写字母,则 istitle() 方法返回 True。否则返回 False。符号和数字将被忽略。
5.2 搜索值
5.2.1 返回出现次数 count()
count()
方法
count() 方法用于统计字符串里某个字符出现的次数。可选参数为在字符串搜索的开始与结束位置。
语法
string.count(value, start, end)
参数值
参数 | 描述 |
value | 必需。字符串。要检索的字符串。 |
start | 可选。整数。开始检索的位置。默认是 0。 |
end | 可选。整数。结束检索的位置。默认是字符串的结尾。 |
实例
txt = "I love apples, apple are my favorite fruit" print(txt.count("apple", 10, 24))
1
5.2.2 从左搜索并返回 find()、index()
1、find()
方法
find() 方法检测字符串中是否包含子字符串 str ,如果指定 beg(开始) 和 end(结束) 范围,则检查是否包含在指定范围内,如果指定范围内如果包含指定索引值,返回的是索引值在字符串中的起始位置。如果不包含索引值,返回 -1。
语法
string.find(value, start, end)
参数值
参数 | 描述 |
value | 必需。要检索的值。 |
start | 可选。开始检索的位置。默认是 0。 |
end | 可选。结束检索的位置。默认是字符串的结尾。 |
实例
- 字母 “e” 在文本总首次出现的位置:
txt = "Hello, welcome to my world." x = txt.find("e") print(x)
1
- 如果只搜索位置 5 到 10 时,字母 “e” 在文本总首次出现的位置:
txt = "Hello, welcome to my world." x = txt.find("e", 5, 10) print(x)
8
- 如果找不到该值,则 find() 方法返回 -1,但是 index() 方法将引发异常:
txt = "Hello, welcome to my world." print(txt.find("q")) print(txt.index("q"))
Traceback (most recent call last): File "C:\Users\MK\Desktop\Python方法\str.py", line 4, in <module> print(txt.index("q")) ValueError: substring not found -1
2、index()
方法
index() 方法检测字符串中是否包含子字符串 str ,如果指定 beg(开始) 和 end(结束) 范围,则检查是否包含在指定范围内,该方法与 find() 方法一样,只不过如果str不在 string中会报一个异常。
语法
string.index(value, start, end)
参数值
参数 | 描述 |
value | 必需。要检索的值。 |
start | 可选。在哪里开始检索。默认是 0。 |
end | 可选。在哪里结束检索。默认是字符串的末尾。 |
实例
- 字母 “e” 在文本中首次出现在哪里?
txt = "Hello, welcome to my world." x = txt.index("e") print(x)
1
- 如果只在位置 5 和 10 之间搜索时,字母 "e"首次首先在哪里?
txt = "Hello, welcome to my world." x = txt.index("e", 5, 10) print(x)
8
- 如果找不到该值,则 find() 方法返回 -1,但是 index() 方法将引发异常:
txt = "Hello, welcome to my world." print(txt.find("q")) print(txt.index("q"))
-1 Traceback (most recent call last): File "C:\Users\MK\Desktop\Python方法\str.py", line 3, in <module> print(txt.index("q")) ValueError: substring not found
3、find()
和 index()
区别
find() 方法与 index() 方法几乎相同,唯一的区别是,如果找不到该值,index() 方法将引发异常,则 find() 方法将返回 -1。
5.2.3 从右搜索并返回 rfind()、rindex()
1、rfind()
方法
rfind() 返回字符串最后一次出现的位置,如果没有匹配项则返回 -1 。
语法
string.rfind(value, start, end)
参数值
参数 | 描述 |
value | 必需。要检索的值。 |
start | 可选。从何处开始检索。默认是 0。 |
end | 可选。在何处结束检索。默认是到字符串的末尾。 |
实例
- 在哪里最后出现文本中的字母 “e”?
txt = "Hello, welcome to my world." x = txt.rfind("e") print(x)
13
- 如果只在位置 5 和位置 10 之间搜索,文本中最后出现的字母 “e” 在何处?
txt = "Hello, welcome to my world." x = txt.rfind("e", 5, 10) print(x)
8
- 如果找不到该值,则 rfind() 方法返回 -1,但是 rindex() 方法将引发异常:
txt = "Hello, welcome to my world." print(txt.rfind("q")) print(txt.rindex("q"))
-1 Traceback (most recent call last): File "C:\Users\MK\Desktop\Python方法\str.py", line 3, in <module> print(txt.rindex("q")) ValueError: substring not found
2、rindex()
方法
rindex() 返回子字符串 str 在字符串中最后出现的位置,如果没有匹配的字符串会报异常,你可以指定可选参数[beg:end]设置查找的区间。
语法
string.rindex(value, start, end)
参数值
参数 | 描述 |
value | 必需。要检索的值。 |
start | 可选。从何处开始检索。默认是 0。 |
end | 可选。在何处结束检索。默认是到字符串的末尾。 |
实例
- 在哪里最后出现文本中的字母 “e”?
txt = "Hello, welcome to my world." x = txt.rindex("e") print(x)
13
- 如果只在位置 5 和位置 10 之间搜索,文本中最后出现的字母 “e” 在何处?
txt = "Hello, welcome to my world." x = txt.rindex("e", 5, 10) print(x)
8
- 如果找不到该值,则 rfind() 方法返回 -1,但是 rindex() 方法将引发异常:
txt = "Hello, welcome to my world." print(txt.rfind("q")) print(txt.rindex("q"))
-1 Traceback (most recent call last): File "C:\Users\MK\Desktop\Python方法\str.py", line 3, in <module> print(txt.rindex("q")) ValueError: substring not found
3、rfind()
和 rindex()
区别
rfind() 和 rindex() 都是查找指定值的最后一次出现。如果找不到该值,则 rfind() 方法将返回 -1,而 rindex() 方法将引发异常。
5.3 以 str 开头/结束 startswith()、endswith()
1、startswith()
方法
startswith() 方法用于检查字符串是否是以指定子字符串开头,如果是则返回 True,否则返回 False。如果参数 beg 和 end 指定值,则在指定范围内检查。
语法
string.startswith(value, start, end)
参数值
参数 | 描述 |
value | 必需。检查字符串是否以其开头的值。 |
start | 可选。整数,规定从哪个位置开始搜索。 |
end | 可选。整数,规定结束搜索的位置。 |
实例
检查位置 7 到 20 是否以字符 “wel” 开头:
txt = "Hello, welcome to my world." x = txt.startswith("wel", 7, 20) print(x)
True
如果字符串以指定的值开头,则 startswith() 方法返回 True,否则返回 False。
2、endswith()
方法
endswith() 方法用于判断字符串是否以指定后缀结尾,如果以指定后缀结尾返回 True,否则返回 False。可选参数 “start” 与 “end” 为检索字符串的开始与结束位置。
语法
string.endswith(value, start, end)
参数值
参数 | 描述 |
value | 必需。检查字符串是否以之结尾的值。 |
start | 可选。整数。规定从哪个位置开始检索。 |
end | 可选。整数。规定从哪个位置结束检索。 |
实例
- 检查字符串是否以短语 “my world.” 结尾:
txt = "Hello, welcome to my world." x = txt.endswith("my world.") print(x)
True
- 检查位置 5 至 11 是否以短语 “my world.” 结尾:
txt = "Hello, welcome to my world." x = txt.endswith("my world.", 5, 11) print(x)
False
如果字符串以指定值结尾,则 endswith() 方法返回 True,否则返回 False。
5.4 编/解码 encode()、decode()
encode()
和 decode()
encode() 方法以指定的编码格式编码字符串,decode() 方法以指定的解码格式解码字符串。
errors参数可以指定不同的错误处理方案。
语法
string.encode(encoding=encoding, errors=errors) string.decode(decoding=decoding, errors=errors)
参数值
参数 | 描述 |
encoding / decoding | 可选。字符串。规定要使用的编码/解码。默认是 UTF-8。 |
errors | 可选。字符串。规定错误方法。合法值是: ‘backslashreplace’ - 使用反斜杠代替无法编码的字符 ‘ignore’ - 忽略无法编码的字符 ‘namereplace’ - 用解释字符的文本替换字符 ‘strict’ - 默认值,失败时引发错误 ‘replace’ - 用问号替换字符 ‘xmlcharrefreplace’ - 用 xml 字符替换字符 |
实例
str = 'pink老师' str_utf8 = str.encode("UTF-8") str_gbk = str.encode("GBK") print("UTF-8 编码:", str_utf8) print("GBK 编码:", str_gbk) print("UTF-8 解码:", str_utf8.decode('UTF-8', 'strict')) print("GBK 解码:", str_gbk.decode('GBK', 'strict'))
UTF-8 编码: b'pink\xe8\x80\x81\xe5\xb8\x88' GBK 编码: b'pink\xc0\xcf\xca\xa6' UTF-8 解码: pink老师 GBK 解码: pink老师