python常用数据类型str、list、tuple、set、dict的常用方法汇总&编码与解码
一、字符串(str)的常用方法
1.1 字符串的格式化
1.1.1 %s、%d、%f进行占位
name = "zhangsan"
address = "chengdu"
age = 18
hobby = "meiniu"
str1 = "我的名字%s,家住%s,年龄%d岁,爱好%s" % (name,address,age,hobby)
1.1.2 {}进行占位,.format()填充
name = "zhangsan"
address = "chengdu"
age = 18
hobby = "meiniu"
str2 = "我的名字{},家住{},年龄{}岁,爱好{}".format(name,address,age,hobby)
1.1.3 f-string(最推荐的方式)
name = "zhangsan"
address = "chengdu"
age = 18
hobby = "meiniu"
str3 = f"我的名字{name},家住{address},年龄{age}岁,爱好{hobby}"
1.2 字符串的索引、切片、常用方法、切割、替换等
1.2.1 字符串的索引、切片
str_1 = "张三爱上了李四的妹妹"
print(str_1[3])
print(str_1[2:5])
print(str_1[5:2:-1])
print(str_1[::-1])
1.2.2 字符串的常用方法:upper()、lower()
s = "pytHOn"
s1 = s.capitalize()
str = "i hava a big dream!!"
str1 = str.title()
print(str1)
str2 = str.upper()
print(str2)
str3 = str.lower()
print(str3)
1.2.3 字符串的切割与替换:strip()、replace()、split()
s = " 你好, 我的名字 是 德华 "
s1 = s.strip()
print(s1)
s = " 你好, 我的名字 是 德华 "
s1 = s.replace(" ","")
print(s1)
s2 = s1.replace("德华","星驰")
print(s2)
s = "pyhton_java_vue_js_c_c#_javascript"
li = s.split("_")
print(li)
1.3 字符串的查找和判断
1.3.1 字符串的查找:find()、startswith()、endswith()
s = "你好,欢迎光临,周先生"
ret = s.find("先生")
print(ret)
ret = s.index("先生")
print(ret)
一般情况下判断字符串A在另一个字符串中,使用:in
name = "张无忌#"
if name.startswith("张"):
print("姓张")
else:
print("不姓张")
if name.endswith("#"):
print("以#结尾")
else:
print("不以#结尾")
1.3.1 字符串的判断:isdigit()、isdecimal()
money = "12"
if money.isdigit():
print("是整数组成,可以转换")
money = int(money)
print(money)
1.4 字符串的补充方法:len()、join()
s = "张三李四王二麻子"
print(len(s))
li = ["刘德华","周星驰","吴奇隆","周润发"]
str1 ="&".join(li)
print(str1)
二、list的常用方法
2.1 列表的追加、插入、合并:append()、insert()、extend()
li.append("吴奇隆")
li.append("刘德华")
print(li)
li.insert(1,"周星驰")
print(li)
li_1 = ["赵本山","刘德华"]
li_2 = ["吴奇隆","周星驰"]
li_1.extend(li_2)
print(li_1)
2.2 列表的元素删除:pop()、remove()
li_3 = ['赵本山', '刘德华', '吴奇隆', '周星驰']
ret = li_3.pop(3)
print(li_3)
print(ret)
li_3.remove("周星驰")
2.3 列表的元素修改、查询:使用index进行修改、查询
2.4 列表元素的排序:sort()
li_3 = ['赵本山', '刘德华', '吴奇隆', '周星驰']
li_4 = [123,234,321,2,3,1,6,7,67,78]
li_3.sort()
li_4.sort()
print(li_3)
print(li_4)
li_3.sort(reverse=True)
li_4.sort(reverse=True)
print(li_3)
print(li_4)
2.5 列表元素的循环删除:(删除一个,后面的元素会向前移动,会导致循环漏掉部分元素)
li = ["刘皇叔","刘天王",'赵本山', '周星驰', '吴奇隆', '刘德华']
temp = []
for item in li :
if item.startswith("刘"):
temp.append(item)
for item in temp:
li.remove(item)
三、tuple(元祖:不可变的)
某些固定的数据,不允许外界修改的时候,使用tuple; 特殊1:如果元祖tuple只有一个元素,需要在元素的末尾添加一个逗号
tup = ("元祖元素")
tup = ("元祖元素",)
特殊2:tuple不可变,但是元祖元素如果是可变的类型,如:list;
tup = (1,2,3,"张三",["元素1","元素2","元素3"])
tup[3].append("元素4")
四、set(集合):元素间是无序的
4.1、set(集合)定义的注意事项:元素可哈希
4.2、set(集合)创建空集合的方式:不是st = {} ,这样默认是dict
st = set()
4.3、set(集合)元素的添加、删除:add()
s = set()
s.add("赵本山")
s.add(123)
s.pop()
s.remove("范伟")
五、dict(字典):键值对的形式存储数据,字典的key必须是可哈希的数据类型
5.1 、dict的增删改查:setdefault()、get()
dict1 = {}
dict1["name1"] = "周杰伦"
dict1.setdefault("test_key","我是默认值")
print(dict1["name1"])
print(dict1.get("name1"))
5.2 、dict的循环、嵌套(嵌套就不记录了)
print(list(dict2.keys()))
print(list(dict2.values()))
for key in dict2:
print(key,dict2[key])
for item in dict2.items():
print(item)
key = item[0]
val = item[1]
for key,val in dict2.items():
print(key,val)
5.3 、dict的循环删除(和list一样类似的问题)
dict2 = {
"王二":"丑",
"赵四":"嘴歪",
"刘能":"结巴",
"刘天王":"帅"
}
for key,val in dict2.items():
if key.startswith("刘"):
dict2.pop(key)
dict2 = {
"王二":"丑",
"赵四":"嘴歪",
"刘能":"结巴",
"刘天王":"帅"
}
temp = {}
for key,val in dict2.items():
if key.startswith("刘"):
temp[key] = val
for key,val in temp.items():
dict2.pop(key)
print(dict2)
六、字符集、编码、解码
6.1 、编码与解码
1. str.encode("编码")
"刘德华".encode("gbk")
"刘德华".encode("utf-8")
2. bytes.decode("编码")
b'\xe5\x91\xe6\x9d\xe6\x9d'.decode("gbk")
b'\xe5\x91\xe6\x9d\xe6\x9dx9d\xe6\x9d'.decode("utf-8")
|