字符串定义:单、双引号和三引号(可换行),换行符\n 但三引号一般是用来注释,用单、引号进行定义
序列类型:指的是有序的排列(字符串,列表,元祖)。判断是否是序列类型:看他有没有顺序,能不能通过下标取值,能就属于序列类型,字典不是,集合也不是
字符串:str1='hello world'
str1[0]
'h'
字符串能进行下标取值,也能进行切片(左闭右开)
字符串不可以修改
str1[0]='a'(列表可以直接修改,字符串会报错)
实在要改,就用str.replace('h','a'),第一个参数写的是你要替换哪个字符,第二个参数是你要用哪个去把前面的提换下来,只要满足条件就会进行替换,不管你有多少个重复的,也可以选择替换1个或多个,替换的方向是从左往右。替换得到的是新的字符串,原子符串不会修改 replace('l','p',1)第三个参数值的数字表示替换几次字符
str2.upper() 大写
str2.lower()小写
str2.capitalize 首字母大写
str2.tile() 每个单词的首字母大写,标题形式
str2.strip() 去除左右两边的空格
str2.lstrip() 去除左边空格
str2.rstrip() 去除右边的空格
字符串的切割 可以切割文章里面的每个单词,或者是获取特定的数据也可以进行切
split() 是将字符串变成列表
默认以空格来作为切割符(分割符),切割后的元素放在列表中
可以指定切割符号(也可以用这个字符串当分割符)split('o'),也可以指定切割次数split('o',2)
join()拼接,是将列表变回字符串。把处理完的数据,重新拼接起来,拼完之后是一个字符串
字符串的查找
index() 根据元素名称查找元素的索引位置,不能获取全部的,想要做到就得循环
str1.index('0',8)数字表示开始查找的位置
找不到元素会报错,程序一旦报错,后面的代码都不会运行
str1.find('0',25) 根据元素名称,查找对应元素的下标位置,找不到,不会报错,返回负一,-1表示没有这个元素
在交互模式下写一行代码,回车,能得到一个数据的结果,这种表示存在返回值,有返回值的才能通过变量接收,无返回值的不能通过变量接收,也不能打印。有返回值的能通过变量接收,也能打印
li.sort()是更改原列表的排序,并且方法是从小到大排序的
sorted(li)是临时排序,原列表不发生任何改变,有返回值,可以通过变量接收
' '.isalpha()判断字符串是否全由字母和中文组成
' '.isdigit()判断是否全是数字组成
' '.isupper()判断是否全是大写
' '.islower()判断是否全是小写
字符串的转义(反斜杆\+字母)
字符串的转义,在print()里面才有用
\n 换行符
\t 水平制表符,可以实现对齐,八个字符八个字符实现对齐
下面三个在交互模式下解释不出来,只有在cmd里面才能解释出来
\b往前退一格,相当于退格键,吞掉\b前一个,后面往前跟进
\a系统提示音
\0产生一个空格
\取消字符串的转义
r统一取消转义(在路径里面用得比较多)
遇到乱码,怎么让他不乱码,让他换成我们能看懂的代码,那就要用到编码和解码方式
str='安言'
str1.encode ( encoding='utf-8'编码的时候要设置他的编码规则是什么)
bxnxbhxbxbdbxb编码后,原本中文,变成看不懂的形式。原字符串没发生任何改变
把编码以后的内容进行解码
str2=str1.encode ( encoding='utf-8'编码的时候要设置他的编码规则是什么)
str2.decode()
'安言'
encode() 编码,默认以utf-8编码格式
decode() 解码,默认以utf-8格式解码
用什么方式编码,就要用什么方式解码,不然会出现乱码
在后面学到文件操作时,中文(如果是英文还能全部读取到)需要设置编码格式才能读取文件里面的内容。不管操作什么东西,都设置一个编码格式比较好,不然乱码都不知道是什么情况,包括后面爬取代码,和存储内容,不管是存储数据还是获取数据,最好设置他的编码和解码的方式,这样会防止你数据的错乱
字典 {} dict 以键值对形式实现一一对应
字典没有顺序,不能通过下标取值属于散列类型
可迭代对象跟顺序是没有关系的
键是不可变数据类型
dic={'a':1,'b':2} 冒号前面的是键,后面的是值,不同的键值对,通过逗号隔开,键和值通过冒号连接,不同的元素通过逗号隔开
dic['a'] 通过键取值,键是唯一的
字典的定义方式
1.dic1={} 空字典
2.dic2={'a':1,'b':2} 常规定义
3.dic3=dict(a=1,b=2)通过dict函数定义,它的键就一定要是字符串,并且不要带引号去写,它会默认转为字符串
字典的增删改查
查 通过键(key)取值( value)键不存在会报错
1.dic['name']
get() 不存在则返回None
2.get(key,自定义的数据) 不存在则返回自定义的数据
增
setdefault(键,值) 键无则增,有则查
字典通过for循环迭代时,也是通过键进行迭代
列表是通过下标
改
赋值语句 无则增,有则改
update() 可以实现批量添加,无则增,有则改
注意批量时,里面用的是花括号,且有冒号的形式
删
pop(key) 根据键删除对应的键值对
dic.popitem() 在3.6之后,根据添加进去的顺序进行删除,先添加的后删除,后添加的,先删除
clear()清空字典所有数据
keys()获取所有的键
values()获取所有的值
items() 获取所有的键值对 每一个键对放元祖里,元祖不可更改
集合{} set
空集合 set()
set1=set()
集合里面的数据具有唯一性,会自动去重,集合无序,不能通过下标取值
集合的运算
& 交集,两个集合中相同的元素
|(删除键的下面) 两个集合的元素合并在一起
-差集,前面的集合减去后面的集合(同类型去相减)
集合的增删改查
增
add() 添加一个元素
update()批量添加 里面用花括号
删
pop()随机删除
remove(value) 根据元素名称删除对应元素
集合是不能修改的(因为他是无序的),所以他也不能查
集合的判断
isdisjoint() 判断两个集合是否没有交集
issubset()判断前面的集合是否被包含在后面的集合中
issuperset()判断前面的集合是否包含后面的集合数据
身份运算符 is is not
判断两者之间是否是同一个对象
通过内存地址来判断是否一致
Python当中存在内存池,范围[-5,256],范围内,内存地址一致,范围外,内存地址不一致
(元祖,字符串,不管是序列类型还是散列类型都可以用,数值类型不能使用成员运算符)成员运算符 in not in
数值类型不能使用成员运算符
优先级
判断是否为可变对象
判断依据:修改过后还是不是原本的内存地址,如果修改后内存地址不变是可变对象
修改后内存地址改变是不可变对象
可变对象:列表,字典,集合
不可变对象:数值类型,元祖,字符串
1,交集
2. count方法,统一大写或小写
3.10次就循环,k=4表示在str1中随机抽取4次
4,手机号,全是数字,以一开头,11位