本次的内容涉及字符串与散列类型及其方法使用
Part one:字符串
一:字符串的格式
str()
二字符串的使用
首先,定义一个字符串:
stra='this is python'
打印这个字符串
print(stra)
得到:
this is python
上次我们学到列表的使用,我们知道列表的每一个元素都有自己对应的下标可以通过对应列表名[下标数字]的方式进行切片,那么是否也可以利用如此方式对字符串进行切片查询呢?
1:字符串的下标取值
print(stra[0])
输出结果就为:
t
可见,字符串也是可以用下标进行取值的,每一个字符位置对应一个下标,因此空格也有它的下标迄今为止,我们已经学到了三种可以使用切片数据类型,分别是列表(list),元组(tulip),还有字符串(string),我们把这样的数据类型称为序列类型
2:字符串不能利用下标修改
比如:
stra='this is python'
stra[0]='T'
print(stra)
报错
3:字符串的修改方法:
①名.replace(‘改前’,‘改后’)(查找替代)替代完以后要用新的变量去接收,否则print后的仍是没有修改的字符串。
比如
格式一
stra='this is python'
strb=stra.replace('t','T')
格式二
stra='this is python'
print(stra.replace('t','T'))
我们发现:
This is pyThon
里面的所有t都变成了T。
②replace的第三个参数,表示修改的数量,指定位数,默认从左往右。替代完以后要用新的变量去接收,否则print后的仍是没有修改的字符串。
格式一
stra='this is python'
strb=stra.replace('t','T',1)
格式二
stra='this is python'
print(stra.replace('t','T',1))
则输出结果
This is python
4:字符串的删除空格
在平常的时候我们输入一些内容,可能会加入空格符号,但是我们当我们不需要空格符号时,就需要将它删除,保留我们需要的内容。
stra=' 关键词 '
print(stra)
结果:
关键词
输出的结果就包含了空格
①清除字符串两端的空格:strip(),清除完以后要用新的变量去接收,否则print后的仍是没有修改的字符串。
格式一:
stra=' 关键词 '
strb=stra.strip()
print(strb)
格式二:
stra=' 关键词 '
print(stra.strip())
则会输出:
关键词
②利用replace方法清除空格
stra=' 关键词 '
strb=stra.replace(' ','')
print(strb)
③清除左或右端
左边:lstrip
右边;rstrip
stra=' 关键词 '
strb=stra.lstrip()
print(strb)
strc=stra.rstrip()
print(strc)
输出结果:
关键词
关键词
5:首字母大写
①给第一个单词的首字母大写
除了之前的replace方法外,还有.capitalize(),同样要用新的字符串接收
stra='this is python'
strb=stra.capitalize()
print(strb)
结果为:
This is python
②给所有单词的首字母大写:.title()
以空格为判断单词的标准,给每一个单词的首字母大写
stra='this is python'
strb=stra.title()
print(strb)
输出结果:
This Is Python
6:字符串的拆分和拼接
①拆分:.split(),以空格为标准,同样要用新的字符串接收(下不提示,和字符串有关的都需要)
stra='this is python'
stab=stra.split()
print(stab)
结果为:列表形式
['this', 'is', 'python']
②拼接:’ '.join[] 两引号之间的内容为拼接之后两个词之间间隔的内容,即两引号间的是空格,那么拼接后的内容就和原来一致,否则就全部连在一起。
stra='this is python'
stab=stra.split()
print(stab)
stac=' '.join(stab)
print(stac)
输出结果为:
this is python
7:返回字符串元素下标:.index()
①.index查询
stra='this is python'
print(stra.index('i'))
输出结果为第一个i的下标:
2
②index的弊端
当我们查询一个不存在的值是
index程序会直接给我们报错,导致程序崩溃。
③:.find方法查询(推荐使用)
方法与index是一致的,当它查询一个不存在的元素时,会返回-1,而不会报错。
stra='this is python'
print(stra.find('a'))
结果为
-1
④find的第二参数,表示从第几个下标开始查起
stra='this is python'
print(stra.find('i',4))
输出结果:
5
::::::::::::**一个小项目:**判断是否字符串存在某一元素,若存在,给出改元素的所有下标。
stra='this is python'
m=0
while True:##这里指的是死循环,不确定字符串长度,所以死循环。
m=stra.find('i',m)
if m == -1:
break
else:
print(m)
m +=1
输出结果为
2
5
利用for
m=0
stra='this is python'
for a in 'this is python':
if a=='i':
m=stra.find('i',m+1)
print(m)
else:
continue
输出结果为:
2
5
8:字符串元素全部大写或小写用新变量去接收
.upper,.lower
①**.upper**,
stra='this is python'
strb=stra.upper()
print(strb)
输出结果为:
THIS IS PYTHON
② .lower
stra='this is python'
strb=stra.upper()
strc=strb.lower()
print (strc)
输出结果为:
this is python
9:判断字符串是否为纯字母
.isalpha
stra='this is python'
print(stra.isalpha())
输出结果为
false
因为里面空格
10.判断字符串是否为纯数字
.isdigit
stra='132578942356'
print(stra.isdigit())
结果为:
True
11:字符串的转义
①:
\n:换行
a='abc\ndefg'
print(a)
#法二:
print('abcd\nefg')
输出结果为:
abc
defg
abcd
efg
②:\t:水品制表符
a='abc\tdefg'
print(a)
#法二
print(abc\defg)
结果为:
abc defg
abc defg
③:\表示一个斜杠
print('abcd\\efg')
结果为:
abcd\efg
④:\‘表示一个引号
print('abcd\'efg')
结果为:
abcd'efg
⑤:\0表示空格
print(abcd\0efg)
结果为:
abcd
⑥:取消字符串的转义
r
print(r'abc\tefg\nhi')
结果为:
abc\tefg\nhi
⑦:系统提示音:
win+r打开,输入cmd,在cmd中,首先输入python
然后输入
print(’\a’)
12:字符串的编码与解码
.encode,.decode
a='明天'.encode(encoding='utf8')
print(a)
print(a.decode(encoding='utf8'))
注意,utf8是万国码,gbk为中文的一类编码。如果在解码时不用utf8,而用gbk,则会输出乱码。
上述的输出结果为:
b'\xe6\x98\x8e\xe5\xa4\xa9'
明天
!
!!
!!!
!!!!
Part two:字典、
1:字典
字典格式:{},
类型为dict
字典的创建
①
story={'name':'小明','性别':'男','星座':'水瓶座'}
print(story)
输出结果为:
{'name': '小明', '性别': '男', '星座': '水瓶座'}
冒号前是一个键,冒号后是一个值,每一个键(key)对应一个值(value)。
所有的键都要用引号引起来,值做数值时可以不带引号。
!!!!!键名是唯一的
!!!!!但是值不是唯一的
如果键名不唯一,那么前面键名的值将会被后面的键名的值替代,如:
story={'name':'小明','性别':'男','星座':'水瓶座','name':'小华'}
print(story)
输出结果
{'name': '小华', '性别': '男', '星座': '水瓶座'}
如果值不唯一不产生影响,
story={'name':'小明','性别':'男','星座':'水瓶座','names':'小明'}
print(story)-----
输出结果为:
{'name': '小明', '性别': '男', '星座': '水瓶座', 'names': '小明'}
字典的创建
②用字典自带的方法dict
story=dict(name='小明',性别='男',年龄='18')
print(story)
等于号前就是键,等于号后就是值,键不用加引号。
②字典没有下标,没有顺序可言,我们称它为散列类。
2字典的查值,
①
输入键名来查找**
字典名[’’]
story={'name':'小明','性别':'男','星座':'水瓶座','names':'小明'}
print(story['name'])
输出结果为:
小明
**弊端:**当我们查找的一个值是不存在时那么这个时候就会报错。
②:字典的查值,字典名.get[‘键名’]
story={'name':'小明','性别':'男','星座':'水瓶座','names':'小明'}
print(story.get('name'))
输出结果为
小明
③字典的查值,get的第二参数
get没有之前直接查询键名的弊端,当查询不到键名时,我们可以利用get的第二参数给用户做提醒
,如果不加第二参数则会输出
none
增加参数就会输出参数的内容,第二参数为数字时可以不加引号。
story={'name':'小明','性别':'男','星座':'水瓶座','names':'小明'}
print(story.get('nam',‘找不到哦’))
结果
找不到哦
④字典查找键(返回键名)
字典名.keys()
story={'name':'小明','性别':'男','星座':'水瓶座','names':'小明'}
print(story.keys())
结果为:
dict_keys(['name', '性别', '星座', 'names'])
⑤字典查找值(返回值)
字典名.values()
story={'name':'小明','性别':'男','星座':'水瓶座','names':'小明'}
print(story.values())
输出结果:
dict_values(['小明', '男', '水瓶座', '小明'])
3字典添加键值对
①
字典名.setdefault(’’,)
story={'name':'小明','性别':'男','星座':'水瓶座','names':'小明'}
story.setdefault("a",1)
print(story)
输出结果:
{'name': '小明', '性别': '男', '星座': '水瓶座', 'names': '小明', 'a': 1}
如果传入的键名已经存在了,那么只会命令返回已经存在的值,不会对原来的字典的键值对产生影响
story={'name':'小明','性别':'男','星座':'水瓶座','names':'小明'}
print(story.setdefault("name",1))
print(story)
结果:
小明
{'name': '小明', '性别': '男', '星座': '水瓶座', 'names': '小明'}
②字典添加多个键值对
.update({‘键’:‘值’,})
story={'name':'小明','性别':'男','星座':'水瓶座','names':'小明'}
story.update({‘a’:‘我’,‘b’:‘要强’})
print(story)
输出结果:
{'name': '小明', '性别': '男', '星座': '水瓶座', 'names': '小明', 'a': '我', 'b': '要强'}
如果新增的键名和原字典中的键名重复,那么新增的键值对将会替代原来键值对,和setdefault不同。
4字典的单个修改
字典(‘健名’)=‘要改成的’
story={'name':'小明','性别':'男','星座':'水瓶座','names':'小明'}
story['name']='小王'
print(story)
输出结果为:
{'name': '小王', '性别': '男', '星座': '水瓶座', 'names': '小明'}
5查找所有的键值对
字典名.items()
story={'name':'小明','性别':'男','星座':'水瓶座','names':'小明'}
print(story.items())
打印的结果同时用元祖和列表的方法表示了出来
dict_items([('name', '小明'), ('性别', '男'), ('星座', '水瓶座'), ('names', '小明')])
6字典的删除
①字典名.pop()
在列表中pop方法默认删除最后一个
字典的pop需要传入键名,否则就会报错
②字典名.popitem()
以添加顺序删除,删除最后添加的键值对
③字典名.copy
stor=story.copy()
④字典名.clear()
最后输出
none
Part three: 集合
集合,用{}
表示:set