python常用数据类型转换(str、list、tuple、set、dict)方法编码与解码字符串格式化处理时间格式化
python常用数据类型str、list、tuple、set、dict的常用方法汇总编码与解码一、字符串str的常用方法1.1 字符串的格式化1.1.1 %s、%d、%f进行占位1.1.2 {}进行占位.format()填充1.1.3 f-string最推荐的方式1.2 字符串的索引、切片、常用方法、切割、替换等1.2.1 字符串的索引、切片1.2.2 字符串的常用方法upper()、lower()1.2.3 字符串的切割与替换strip()、replace()、split()1.3 字符串的查找和判断1.3.1 字符串的查找find()、startswith()、endswith()1.3.1 字符串的判断isdigit()、isdecimal()1.4 字符串的补充方法len()、join()二、list的常用方法2.1 列表的追加、插入、合并append()、insert()、extend()2.2 列表的元素删除pop()、remove()2.3 列表的元素修改、查询使用index进行修改、查询2.4 列表元素的排序sort()2.5 列表元素的循环删除删除一个后面的元素会向前移动会导致循环漏掉部分元素三、tuple元组不可变的四、set集合:元素间是无序的4.1、set集合定义的注意事项元素可哈希4.2、set集合创建空集合的方式不是st {} ,这样默认是dict4.3、set集合元素的添加、删除add()五、dict字典:键值对的形式存储数据字典的key必须是可哈希的数据类型5.1 、dict的增删改查setdefault()、get()5.2 、dict的循环、嵌套嵌套就不记录了5.3 、dict的循环删除和list一样类似的问题六、字符集、编码、解码6.1 、编码与解码七、python时间格式化处理一、字符串str的常用方法1.1 字符串的格式化1.1.1 %s、%d、%f进行占位# 1. 字符串占位%s 备注其实可以代替%d、%f# 2. 整数占位%d 小数占位%fnamezhangsanaddresschengduage18hobbymeiniustr1我的名字%s,家住%s,年龄%d岁爱好%s%(name,address,age,hobby)1.1.2 {}进行占位.format()填充namezhangsanaddresschengduage18hobbymeiniustr2我的名字{},家住{},年龄{}岁爱好{}.format(name,address,age,hobby)1.1.3 f-string最推荐的方式namezhangsanaddresschengduage18hobbymeiniu# 方法三f-stringstr3f我的名字{name},家住{address},年龄{age}岁爱好{hobby}1.2 字符串的索引、切片、常用方法、切割、替换等1.2.1 字符串的索引、切片str_1张三爱上了李四的妹妹# 索引print(str_1[3])#从0开始index3的位置上# 切片1print(str_1[2:5])# 前闭后开从index2开始取到5-1的位置爱上了# 切片2print(str_1[5:2:-1])# 李了上print(str_1[::-1])# 妹妹的四李了上爱三张1.2.2 字符串的常用方法upper()、lower()# str的常规操作# 字符串的操作一般不对原字符串产生影响一般是返回一个新的字符串# 字符串:首字母大小其余小写spytHOns1s.capitalize()# Python# 单词的首字母大写stri hava a big dream!!str1str.title()# I Hava A Big Dream!!print(str1)# 所有小写字母变为大写str2str.upper()print(str2)# 所有大写字母变为小写str3str.lower()print(str3)1.2.3 字符串的切割与替换strip()、replace()、split()# strip()去掉一个字符串前后两端的空白符空格、\t,\n)在登录功能的时候应该实现的用户体验优化s 你好 我的名字 是 德华 s1s.strip()# 你好 我的名字 是 德华print(s1)# replace(old,new),字符串替换s 你好 我的名字 是 德华 s1s.replace( ,)print(s1)#你好我的名字是德华s2s1.replace(德华,星驰)print(s2)#你好我的名字是星驰# split(使用什么切割),返回列表;注意使用什么切割返回结果就没有该切割元素spython_java_vue_js_c_c#_javascriptlis.split(_)# [python, java, vue, js, c, c#, javascript]print(li)1.3 字符串的查找和判断1.3.1 字符串的查找find()、startswith()、endswith()# find(要寻找的内容)返回内容所在,如果返回-1表示不存在s你好欢迎光临周先生rets.find(先生)# 9print(ret)rets.index(先生)# 9 index如果不存在则报错print(ret)一般情况下判断字符串A在另一个字符串中使用inname张无忌#ifname.startswith(张):print(姓张)else:print(不姓张)# endswith()ifname.endswith(#):print(以#结尾)else:print(不以#结尾)1.3.1 字符串的判断isdigit()、isdecimal()# 判断字符串是否是由整数组成money12ifmoney.isdigit():print(是整数组成可以转换)moneyint(money)print(money)1.4 字符串的补充方法len()、join()# len():长度s张三李四王二麻子print(len(s))# 长度8# join() 和 split()是相反的split将字符串分割返回list; join则是将list串为字符串li[刘德华,周星驰,吴奇隆,周润发]str1.join(li)print(str1)# 刘德华周星驰吴奇隆周润发二、list的常用方法2.1 列表的追加、插入、合并append()、insert()、extend()# append()li.append(吴奇隆)li.append(刘德华)print(li)# [吴奇隆, 刘德华]# insert()li.insert(1,周星驰)# [吴奇隆, 周星驰, 刘德华]print(li)li_1[赵本山,刘德华]li_2[吴奇隆,周星驰]# 将li_2合并到 li_1li_1.extend(li_2)print(li_1)# [赵本山, 刘德华, 吴奇隆, 周星驰]2.2 列表的元素删除pop()、remove()li_3[赵本山,刘德华,吴奇隆,周星驰]retli_3.pop(3)# 给出被删除的索引return被删除的元素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]# sort():升序 排列li_3.sort()#[刘德华, 吴奇隆, 周星驰, 赵本山]li_4.sort()#[1, 2, 3, 6, 7, 67, 78, 123, 234, 321]print(li_3)print(li_4)# sort(reverseTrue):降序 排列li_3.sort(reverseTrue)#[赵本山, 周星驰, 吴奇隆, 刘德华]li_4.sort(reverseTrue)#[321, 234, 123, 78, 67, 7, 6, 3, 2, 1]print(li_3)print(li_4)2.5 列表元素的循环删除删除一个后面的元素会向前移动会导致循环漏掉部分元素li[刘皇叔,刘天王,赵本山,周星驰,吴奇隆,刘德华]# for item in li :# if item.startswith(刘):# li.remove(item) # 把姓刘的删除但是后面的元素就前移动了就会漏掉个别姓刘的导致漏删# 最稳妥的删除方式# 准备一个临时listtemp[]foriteminli:ifitem.startswith(刘):temp.append(item)# 把姓刘的先记录在另一个listforitemintemp:li.remove(item)# 再循环临时list去原列表删除这样临时的列表每个元素都会被循环到原列表要删除的元素都会被删除三、tuple元组不可变的某些固定的数据不允许外界修改的时候使用tuple特殊1如果元祖tuple只有一个元素需要在元素的末尾添加一个逗号tup(元组元素)# 程序会认为是字符串默认是优先级# 如果硬是要设置一个元素的元祖数据tup(元组元素,)特殊2tuple不可变但是元祖元素如果是可变的类型如listtup(1,2,3,张三,[元素1,元素2,元素3])tup[3].append(元素4)# 这样是可以的只要元祖元素tup[3]本身是个list,如果你tup[3]改成字符串类型或其他这样就会报错四、set集合:元素间是无序的4.1、set集合定义的注意事项元素可哈希# 可哈希python中set集合进行数据存储的时候需要对数据进行哈希计算根据计算出来的哈希值进行存储数据# set集合要求存储的元素必须是可以进行哈希计算的# 不可变的数据类型值是值不是变量类型int、str、tuple、bool## 不可哈希可变的数据类型值是值不是变量类型list、dict、set 这些是不可作为set元素值存储在set变量中的4.2、set集合创建空集合的方式不是st {} ,这样默认是dictstset()4.3、set集合元素的添加、删除add()sset()s.add(赵本山)s.add(123)s.pop()# 因为set是无序的所以没有index;pop()里面就不传参数默认删除最后一个随机的没什么用s.remove(范伟)# 作用大于pop()五、dict字典:键值对的形式存储数据字典的key必须是可哈希的数据类型5.1 、dict的增删改查setdefault()、get()dict1{}dict1[name1]周杰伦# 设置默认值setdefault(key,value),如果所传入的key已经有值了则该默认值不生效dict1.setdefault(test_key,我是默认值)# 删除# dict1.pop(name1) # 根据key来删除# 查询# 1.根据key进行查询dict1[key],如果key不存在则 报错;当key是确定时使用print(dict1[name1])# 2.使用get方法查询dict1.get(key),如果key不存在则返回None当key不确定时使用print(dict1.get(name1))5.2 、dict的循环、嵌套嵌套就不记录了# 2. 希望把所有的key放在一起如放在列表中print(list(dict2.keys()))# 拿到所有的key,强制转list# 3. 希望把所有的value放在一起如放在列表中print(list(dict2.values()))# 拿到所有的value,强制转list# 1. for循环直接拿到key:forkeyindict2:print(key,dict2[key])# 4. 直接拿到字典的keyvalueforitemindict2.items():print(item)#返回tuple:(key,value)keyitem[0]valitem[1]# 5. 优化 方法4,,,元祖或列表备注dict2.items()返回的就是tuple:(key,value)都可以执行该操作。该操作被称为解包解构forkey,valindict2.items():print(key,val)5.3 、dict的循环删除和list一样类似的问题dict2{王二:丑,赵四:嘴歪,刘能:结巴,刘天王:帅}#删除 姓刘的forkey,valindict2.items():ifkey.startswith(刘):dict2.pop(key)# 报错RuntimeError: dictionary changed size during iteration 在循环的时候改变了大小和列表删除类似dict2{王二:丑,赵四:嘴歪,刘能:结巴,刘天王:帅}# 稳妥的删除准备一个临时dict,放要删除的key:valtemp{}forkey,valindict2.items():ifkey.startswith(刘):temp[key]val# 循环临时的dict,删除原dictforkey,valintemp.items():dict2.pop(key)print(dict2)六、字符集、编码、解码6.1 、编码与解码1.str.encode(编码)# 进行编码刘德华.encode(gbk)# b\xe5\x91\xe6\x9d\xe6\x9d刘德华.encode(utf-8)# b\xe5\x91\xe6\x9d\xe6\x9dx9d\xe6\x9d2.bytes.decode(编码)# 进行解码b\xe5\x91\xe6\x9d\xe6\x9d.decode(gbk)b\xe5\x91\xe6\x9d\xe6\x9dx9d\xe6\x9d.decode(utf-8)七、python时间格式化处理python格式化时间和日期