一、字符串
不管是哪门高级语言,字符串的处理都是我们学习的重点。对字符串的操作常用的 主要包括:查找、分割、拼接、大小写字母转换等。当然,字符串里面包含的不止字母和数字,还包括中文、特殊符号等,这就涉及到了字符串编码,事实上,字符串编码在python中见得非常多,这个和他的特性是分不开的。
1.字符串编码与与解码
编码:
首先需要理解什么是字符,比如a、b、c、1、2、3、!、#、%、你、我、他等,都是字符。
还需要知道什么是字节,这个概念和我们平时说的1byte=8bit、1Kbyte = 1024byte是一个概念,我们知道,计算机是一个只认0和1的机器,而一个1bit只有可以是0和1,那么1byte由8bit组成,那么就有256中组合的可能,从0-255都有其对应的字符,就是我们是熟悉的ascii码,显然,仅仅用这256个字符不足以显示现在的所有字符,比如中文的文字,它就没办法表示,但是1byte不能表示,那么2byte嘞?3byte嘞?显然是可以这么做的。而事实上也是这么做的。
那么现在再来说说编码:
真实字符与二进制串的对应关系,真实字符→二进制串,即真实字符—>字节,如果是一个字符串,就是真实字符串—>字节流
解码:
知道了什么是编码,那么解码就是编码的反过程,即字节流—>真实字符串。
在计算机中,内存中的数据一直是以Unicode的编码方式表示的,什么是Unicode?为什么要用这种编码方式?请参考另一篇博文,不保证准确性哦:
什么是Unicode
在python2和python3中,字符串类型都只有两种:byte和str类型
其中str存的是Unicode类型的字符、str存的是byte类型的字符。
python中编解码的转换有两个函数:
①编码:encode() 将其他编码的字符串转换成Unicode编码
②解码:decode() 将Unicode编码转换成其他编码的字符串
字符串编码后是以byte(字节)为单位进行处理的,解码后是按照字符为单位进行处理的,请看下面例子:
str1 = 'lhsmd'
print(type(str1))
str2 = str1.encode()
print(type(str2))
str3 = str2.decode()
print(type(str3))
输出如下:
此外,用户可以指定编解码的格式,注意,如果编码格式为‘gbk’,那么解码也必须是‘gbk’,二者要对应,否则将会报错,如下:
str1 = '这是一个测试'
print(type(str1))
str2 = str1.encode('utf-8')
print(type(str2))
str3 = str2.decode('utf-8')
print(type(str3))
输出:
如果你不知道是以什么格式编码或者解码的,就不要指定,直接像上面的例子即可。
2.字符串处理
字符串常见的操作可调用的函数如下:
find() 在字符串中找想要的子串,查找成功返回出现子串的位置,失败返回-1
split() 字符串分割,参数为分割的标志,返回分割好之后的列表
count() 子串出现的次数,返回出现的次数
replace() 字符串替换,返回替换后的字符串
capitalize() 字符串首字母大写,返回首字母大写好之后的字符串
lower() 大写转小写 ,返回转换后的字符串
upper() 小写转大写,返回转换后的字符串
举例如下:
str1 = '这是一个字符串处理函数的测试,有什么问题或者错误,请批评指正,感谢!adcd,ABCD'
print(str1.find('错误'))
print(str1.split(','))
print(str1.count(','))
print(str1.replace(',', '。'))
print(str1.capitalize())
print(str1.lower())
print(str1.upper())
输出:
二、常用数据结构
1.列表
(1)简介
①列表的所有元素放在一对中括号“[]”中,并使用逗号分隔开;
②一个列表中的数据类型可以各不相同
s = [1,2,3,'1','a',"strd",6,'ys']
print(s[4]) # a
print(s[5]) # strd
for i in s:
print(i,end=" ") # 遍历输出
print("")
n = 0
while n < len(s):
print(s[n],end=" ")
n+=1
(2)列表的相关操作:
①添加元素
append 在列表末尾插入
extend 分裂式末尾插入
insert 在指定位置插入
②修改元素
通过下标修改
③查找元素
in
not in
index
count
④排序
sort
reverse
⑤删除元素:
del
pop
remove
(3)列表推导式:
[表达式 for 变量 in 列表]
[表达式 for 变量 in 列表 if 条件]
例如:li2 = [a for a in range(11)]
(4)列表嵌套:
即列表里面又有列表
li = [1, 2, 3, [4, 5, 6]] # [4, 5, 6]是里面的列表
print(li[3]) # 取出里面的列表
print(li[3][1]) # 取出内列表中的元素5
2.元组
(1)元组格式:
tua = (1, 2, 3)
python中不允许修改元组的数据,包括不能删除其中的元素。
写元组的时候,只有一个元素末尾一定要加,
(2)元组操作:
index 从元组中找出某个对象第一个匹配项的索引位置,如果不在元组中会报一个异常
count 统计某个元素在元组中出现的次数
t = (1,3,"44","LHSMD",5,6)
print(t) # 输出这个元组
print(t[4]) # 输出这个元素的第5个元素 注意是从0开始
print(t.index(5)) # 输出第一次出现5的位置
print(t.count(2)) # 输出元组中2 出现的次数
3.字典
(1)字典格式:
dic = {'name': 'zs', 'age': 18}
键 值
字典中的键具备唯一性, 值可以重复
根据键名访问值
dic2 = {'name': '酸橘子', 'name2': '别'}
print(dic2['name'])
print(dic2.get('name3')) # 键名不存在,返回None
(2)字典常见操作:
①查看元素
变量名[键名]、变量名.get(键名)
②修改元素:
通过key找到,即可修改
③添加元素
变量名['键'] = 数据 不存在则新增
④删除元素
del删除指定的元素
clear清空整个字典
其他操作:
len 键值对的个数
keys 返回包含字典所有key的列表
value 包含字典所有value的列表
items 包含所有(键、值)的列表
dic = {"name":"LHSMD","age":"18"}
print(dic.get("name")) # 得到 name 的键值
print(dic.keys()) # 返回包含字典所有key的列表
print(dic.items()) # dict_items([('name', 'LHSMD'), ('age', '18')])
dic['love'] = "what"
print(dic) # {'name': 'LHSMD', 'age': '18', 'love': 'what'}
del dic['love']
print(dic) # {'name': 'LHSMD', 'age': '18'}
dic.clear()
print(dic) # {}
4.集合
(1)简介
①集合是无序的,里面的元素是唯一的
②可以用于元组或者列表去重
(2)集合相关操作:
①添加元素:
add
update
②删除元素:
remove
pop
discard
③交集 &
④并集 |
三、总结
需要记住编解码方法,熟悉字符串处理方法;
记住下面这边常用数据结构,注意区分他们:
列表-------a[1,2,3,"111","567",2,"lhsmd"]
元组-------a(1,2,3,"jjj",5,"444") 元素不可改变
字典-------a{"name":"LHSMD","age":"23"} 键值对
集合-------a{1,2,3,"LLL",8,"LHSMD"} 无序性
根据他们的特点,注意增删改查的操作