数据类型-字符串知识点
定义:
由引号引起来的一系列数字、字母、符号及中文的组合,并且定义好的字符串是不可修改的
创建:使用单引号或双引号可以创建一个只有一行的字符串
注意:引号不能混合使用,且引号只是字符串的一个表达方式,本省不属于字符串内容
转义字符:一种特殊字符,用于表示无法直接表示的字符,以反斜杠“\”开头
常用的转义字符:
换行字符:\n用于换行
制表符:\t,相当于Tab
回车符:\r,将光标移到当前行的开头
反斜杠:\\ ,将反斜杠本身转义,使反斜杠本身成为一个普通字符
单引号与双引号的转义:'就在反斜杠后面加单引号或者双引号,代表仅仅符号本身,而非字符串的标识
字符串的访问与操作(下标访问和切片访问)重要!!!
下标访问
其实就是就是编号,通过编号找到对应的字符,可以从左到右(0开始),也可右到左(-1开始),下标不能超出范围
切片访问
通过下标进行访问,一次可以访问多个字符,访问方式: 字符串名[初始位置:终止位置:步长]
访问包括初始位置不包括终止位置,且步长默认为1。如果没有给出终止位置,则输出字符串的结束位置,此时包括终止位置。
字符串的比较:
逐个字符比较,如果两个字符的Unicode编码值相同,则继续比较下个字符
补充:Unicode编码是人为规定的标准编码系统包括拉丁字母,数字,符号,
各种语言的字母,特殊字符等在内的广泛字符集。优点:可以避免不同编码导致的兼容性导致的乱码问题。UTF-8是一种变长编码,可以表示Unicode字符集中的任何字符,并且兼容ASCII编码。
常见ASCII编码值 (需要记忆)
0:48 1:49 9:57
A:65 B:66 Z:90
a:97 b:98 z:122
字符串的加法和乘法
使用(+)可以将两个字符串拼接起来,返回一个新的拼接好的字符串。
使用(*)乘以一个整数n,可以将某个字符串复制n 次,并返回一个新的复制n次的字符串
查询函数
find()
从左往右查找 检测字符是否包含指定字符,是则返回开始的索引值,否则返回-1
str1 = 'Hello World'
print(str1.find('o'))
结果:4
index()
从左往右查找 检测字符是否包含指定字符,是则返回开始的索引值,否则报错
str2 = 'Hello World'
print(str1.index('Hello'))
结果:0;返回这个字符串开始的第一个索引值即H:0
总结:find()和index()函数功能相同,只是返回值不同,根据自己需要选择
rfind()
从右往左查找 检测字符是否包含指定字符,是则返回开始的索引值,否则返回-1
str3 = 'Hello World'
print(str3.rfind('or'))
结果:
7
rindex()
从右往左查找 检测字符是否包含指定字符,是则返回开始的索引值,否则报错
str4 = 'Hello World'
print(str4.rindex('or'))
总结:rfind()和rindex()只是搜索方式不同,若长度大,使用这两个方法要快点,数据量不大的情况下,效率差不多
lower():大写转化为小写
upper():大写转化为小写
title():将每个字符串首字母大写
总结:这三个函数的对象都必须是字母
字符串的判断函数
# 字符串的判断函数
str1 = 'Hello World'
#检测字符串是否以给定的开头,要加参数
print(str1.startswith('he'))
#检测字符串是否以给定的结尾,要加参数
print(str1.endswith('he'))
#检测字符串是否只包含空格,不加参数
print(str1.isspace())
#检测字符串是否都是字母或者数字则返回True,不加参数
print(str1.isalnum())
#检测字符串是否只包含数字,不加参数
print(str1.isdigit())
#检测字符串是否只包含字母,不加参数
print(str1.isalpha())
分割函数
partition():将字符串根据餐宿分割为三部分,从左检测
rpartition():将字符串根据餐宿分割为三部分,从右边检测
split():将字符串根据参数进行分割,且可以指定分割的次数
splitlines():按照\n分割,返回一个列表
# 字符串的分割函数
str1 ='hello world hello China'
str3 ='hello\n world \nhello China'
str2 = str1.partition('world')
# partition()函数会返回一个元组,如果参数里填的字符串在源字符串中不存在
# 就会生成两个空字符串及源字符串放到元组中
print(str2)
str3 = str1.rpartition('world')
print(str3)
# 将字符串根据参数进行分割,可以自定义分割次数
#如果不指定切割次数,那么会切断所有能检测到的地方
print(str1.split(' ',2))
print(str3.splitlines())
其他函数:
count():统计字符串出现的字符
join():将序列中的元素连成一个新的字符串
replace():替换指定的字符串,并且可以替换的次数
capitalize() 将字符串字母大写
len():返回字符串的长度值
#其他常用函数
# count函数
str1 = 'hello world'
print(str1.count('o'))
# join 函数,序列中的元素必须是字符串才可以连接为新的字符串
str2 = '_'
list1 =['hello','world','hello world']
print(str2.join(list1))
# replace函数
str2 = 'hello world hello China'
print(str2.replace('hello','Hello',)) # 替换两次
print(str2.replace('hello','Hello',1)) #替换一次
# capitalize函数 和 title函数类似
str3 = 'hello world'
print(str3.capitalize())
print(len(str3))
课后习题
选择题
1.对于字符串 s = "Hello, World!",以 下获取第一个字符 'o' 的正确方式 是?
A s [4]
B s [5]
C s [-7]
D 以上都可以
正确答案 A 我的答案 B
总结:下标和所在位置弄混淆,没掌握清楚,重新看一下视频讲解
2.对于字符串 s = "Python is great", 以下切片操作返回 "is great" 的是?
A s [7:]
B s[6::]
C s [7:11]
D s [6:10]
正确答案 A 我的答案 B
总结:
1.不清楚空格算不算在里面,我认为不算,就判定为is索引值为6开始
2.空格也算哟
s = 'python is great'
print(s[7:])
print(s[6:])
结果:
is great
is great(前面有个空格)
对于字符串 "Hello\nWorld",其中 "\n" 的作用是?
A 表示一个普通字符 "n"
B 表示字符串的结束符
C 换行符,使 "World" 另起一行显示
D 制表符,相当于按 Tab 键
正确答案 C 我的答案 D
总结:
我当时想的分割函数就一下选了制表符,完全忽略了后面的n
主观题
阐述字符串比较在 Python 中的工 作原理,包括字符编码的作用以及 比较的顺序。
参考答案
在 Python 中,字符串比较是逐个 字符进行的。比较的依据是字符的 Unicode 编码值(ASCII 码值是 Unicode 编码值的一部分,对于常 见字符也适用)。比较顺序是从字 符串的第一个字符开始,依次比较 对应位置的字符。如果两个字符的 编码值相同,则继续比较下一个字 符,直到找到不同的字符或者比较 完所有字符。
例如,比较 "abc" 和 "abd",首先 比较第一个字符 'a' 和 'a',相同; 接着比较第二个字符 'b' 和 'b',相 同;然后比较第三个字符 'c' 和 'd',因为 'c' 的 Unicode 编码值小 于 'd' 的编码值,所以 "abc" < "abd"。如果两个字符串长度不同, 较短的字符串在比较完其所有字符 后,如果没有不同字符,则较短的 字符串小于较长的字符串,如 "abc" < "abcd"。字符编码在这个 过程中决定了每个字符的大小关 系,从而确定字符串的比较结果
浙公网安备 33010602011771号