1.字符串
三个引号中字符串会保持传入的格式
连接字符串使用‘+’号,重复输出字符串‘*’号
数字转换为字符串 str(8)
在字符串前加上r或R表示该字符串是非转义的原始字符print(r'C:\Windows\System32')
TypeError错误,为数据类型不正确,若遇到此错误可以检查报错位置的数据类型是否正确
是否存在(in\not in):
str1 in str,判断str1字符串存于str2字符串中,存在返回True,否则False
str1 not in str,判断str1字符串不存于str2字符串中,与in相反
转义字符
\\ 反斜杠符号
\' 单引号
\" 双引号
\n 换行
\t 横向制表符
1.1字符串的切片
字符串中每个字符都分配一个数字索引,第一个索引是0,第二个索引是1,依此类推。
获取单个字符——str[index] index为下标索引,从0开始,如果索引为负数则是倒着开始
print("Hello"[0]) # 获取第一个字符,字符获取从0开始,第二个字符为1
print("Hello"[2]) # 获取第三个字符
print("Hello"[-1]) # 获取倒数第一个字符,使用负数表示获取倒数第几个字符
获取多个字符——str[start:end] 读取索引start开始到索引为end-1 结束的字符 。
print(a[1:3]) # 获取索引1到2的字符
print(a[:4]) # 获取前4位
print(a[5:]) # 获取从索引号5开始后面的字符串,包括索引号5的字符
print(a[5:-1]) # 获取从索引号5开始后面的字符串,不包括最后一位
print(a[-5:-1]) # 获取倒数第5位到倒数第1位,不包括最后一位
通过步长截取——str[start:end:step] 读取索引start开始每相隔step读取字符到索引为end-1结束
a = 'Hello,World!'
print(a[1:10:2]) #表示从第二个字符开始截取,间隔2个字符取一个,输出结果:el,ol
补充
print(a[::2]) # 隔两个截取一个字符串 print(a[::-1]) # 字符串倒叙,有意思的方式~
1.2字符串函数
需要一个变量来接收处理后的字符串a=string.strip(),将string.strip()得到的值传递给a,其中string的值没有被改变。
v = '我是一个大帅哥 '
print(v.replace('帅哥', '美女')) # 替换字符串,帅哥替换从美女,输出 我是一个大美女
print(v.strip()) # 去除左右空格,输出 我是一个大帅哥
print(v.split('是'))# 拆分字符串,返回list,输出 [' 我', '一个大帅哥 ']
print(v.find('我')) # 查找字符串,返回索引号,输出 1
m = 'python'
print(m.upper()) # 将字符串全部转为大写,输出 PYTHON
print(m.lower()) # 将字符串全部转为小写,输出 python
print(m.title()) # 将字符串单词的第一个字母转为大写,其它字母小写,输出 Python
#字母处理
1.string.capitalize()将字符串的第一个字符转换为大写
2.string.title()将字符串的第一个字符转换为大写
3.string.swapcase()字符串小写字符转为大写,大写字母转为小写
4.string.upper()将字符串全部转为大写
5.string.lower()将字符串全部转为小写
#去除空格或者指定字符串
1.string.strip([chars])去除字符串中首尾的字符串,不带参数默认去除空格,注意:该方法只能删除开头或是结尾的字符,不能删除中间部分的字符。print(v.strip('我'))
2.string.lstrip([chars])去除字符串左边字符串,string.rstrip([chars])去除字符串右边字符串
#格式化对齐
1.string.center(width[, fillchar])返回居中的字符串,width为字符串的总宽度,两边用一个字符fillchar填充,默认为空格,如果指定的长度小于原字符串的长度则返回原字符串。注意:如果fillchar超过1个长度或为非字符串或为汉字,则会报出异常print('www.baidu.com'.center(40, '*'))
2.string.ljust(width[, fillchar])返回原字符串左对齐,并使用空格填充至指定长度的新字符串,如果指定的长度小于原字符串的长度则返回原字符串。print ('www.baidu.com'.ljust(50, '*'))
3.string.rjust(width[, fillchar])返回原字符串右对齐,并使用空格填充至指定长度的新字符串,如果指定的长度小于字符串的长度则返回原字符串。print ('www.baidu.com'.rjust(50, '*'))
4.string.zfill()返回指定长度的字符串,原字符串右对齐,前面填充0,print ('lalalalala'.zfill(20))
#替换
1.string.replace(old, new[, count])用新的字符替换老字符,可以指定替换的个数,默认全部替换
2.string.expandtabs([n])将字符串中(tab符号)\t转换成n个空格,默认的空格数是 8
#字符串搜索
1.string.find(sub [,start [,end]])返回sub字符串第一次出现的索引位置,可以通过start和stop参数设置搜索范围,如果未找到sub时返回-1
2.string.rfind(sub [,start [,end]])返回sub字符串最后一次出现的索引位置,如果没有匹配项则返回-1,可以通过start和stop参数设置搜索范围
3.string.index(sub [,start [,end]])类似于string.find()方法。注意:未找到sub时会报出异常
4.string.rindex(sub [,start [,end]])类似于string.rfind()方法。注意:未找到sub时会报出异常
#字符串分割
1.string.split([sep [,maxsplit]])用来根据指定的分隔符将字符串进行分割,不包含分隔符,结果存为列表,不指定sep时,默认将将空格作为分隔符
2.string.partition(sep)用来根据指定的分隔符将字符串进行分割,分割点为首次出现sep的地方,且包含分隔符,结果存为元组,且固定为3个元素,如果sep不存在字符串中,则后面2个元素为空
3.string.rpartiton()用来根据指定的分隔符将字符串进行分割,分割点为最后一次出现sep的地方,且包含分隔符,结果存为元组,且固定为3个元素,如果sep不存在字符串中,则前面2个元素为空
#字符串判断
1.string.isupper()返回字符串中是否全为大写 --> True/False
2.string.islower()返回字符串中是否全为小写 --> True/False
3.string.isdigit()返回字符串中是否只包含数字 --> True/False
4.string.isalpha()返回字符串中是否只包含字母 --> True/False
5.string.isalnum()返回字符串中是否只包含字母或数字 --> True/False
6.string.isspace()返回字符串中是否只包含空格(tab也算空格) --> True/False
7.string.istitle()返回字符串中首字母是否大写 --> True/False
8.string.startswith(prefix[, start[, end]])返回字符串是否以某字符串开始,可以通过start和stop参数设置搜索范围
9.string.endswith(suffix[, start[, end]])返回字符串是否以某个字符串结束 可以通过start和stop参数设置搜索范围
#其它
1.string.count(sub[, start[, end]])计数字符串中某子集的数量,可以通过start和stop参数设置搜索范围
2.len(string)获取字符串的长度
3.list(string)字符串转列表
4.string.join(iterable)列表转字符串,用于将序列中的元素以指定的字符string连接生成一个新的字符串。注意:iterable只能是字符串类型,否则会报出异常
5.string.encode(encoding='UTF-8',errors='strict')以 encoding 指定的编码格式编码字符串
6.string.decode(encoding='UTF-8',errors='strict')解码字符串,出错默认报ValueError,除非errors是ignore或replace
7.string.translate(table [,deletechars])根据参数table给出的表(包含 256 个字符)转换字符串的字符, 要过滤掉的字符放到deletechars参数中
8.string.format(*args, **kwargs)它通过{}和:来代替%、金额的千位分隔符print ('{:,}'.format(123456789)) #输出123,456,789
2.数据结构
2.1 List列表
定义:使用中括号 [] ,里面数据可以是任意类型,也包括列表本身,也可以是字典、元组等。list1 = [2017, 'A', True, list1, list2]
访问:list列表中的每个元素都分配一个数字索引,从0开始,-1为列表倒数第一个。访问list时索引号不能越界,不然会抛出异常,IndexError: list index out of range
修改和新增列表的值:可直接通过索引号修改列表的值,也可通过append()方法对列表增加值。l.append('末尾追加元素') (还可使用list1.insert(index,obj)方法在列表指定位置插入值,后面元素向后移一位,第一个参数为索引号,第二个参数是待添加的新元素)
删除元素:最常用到pop(),其次remove(),最后是del
l.pop(索引号) 是通过列表索引号来删除list元素的方法;不指定索引号时删除最后一个元素;一次只能删除一个元素。l.pop(0) # 删除列表第一个元素
l.remove() 根据给定值查找列表,找到符合条件的第一个值删除,只能一次删除一个。删除不存在的值会抛出ValueError异常
del 变量名 ,del是删除变量,list列表中的值其实都是一个一个的变量如list[0]、list[1]都是他们的变量名。del list1[0:2] # 删除列表第一到第二个元素 del list1 # 删除整个列表
列表切片
list[初始位置:结束位置] list[0:N]从0开始取到list的索引号N-1为止,注意如果结束位超过列表长度不会报错。list[初始位置:结束位置:步长] 步长表示每多少个取一个,list[0:N:M] 从0开每M个数取一个直到list的N-1元素为止。
print(list1[::-1]) # list倒叙
print(list1[-3:-1]) # 倒数第三个到第二个
print(list1[-4:-1:2]) # 从倒数第4个每2个取一个,到代数第二个
列表常用运算
l1 = [1, 2, 3] + ['a', 'b', 'c'] # 连接
l2 = ['Hello!'] * 4 # 重复复制
ain= 'a' in list1 # 元素是否存在
list列表常用函数
len(list) 返回列表的长度
max(list) 返回列表中元素最大值,必须是相同类型对比
min(list) 返回列表元素最小值,必须是相同类型对比
list(tuple) 将元组转换为列表
list列表常用方法
list.append(obj) #在列表末尾添加新的对象
list.count(obj) #统计某个元素在列表中出现的次数
list.extend(seq) #在列表末尾一次性追加另一个序列中的多个值
list.index(obj) #从列表中找出第一个匹配项的索引位置
list.insert(index, obj) #将对象插入列表index位置
list.pop(obj=list[-1]) #移除列表中的一个元素(默认最后一个),返回移除值
list.remove(obj) #移除列表中的第一个匹配到的值
list.reverse() #反向列表中元素
list.sort(cmp=None, key=None, reverse=False) #对原列表进行排序
list.clear() #清空列表
list.copy() #复制列表
2.2 tuple元组
定义:tuple元组是有序的,一旦定义了元组我们就不能修改它。元组中可以包含list列表,元组中list列表的值是可变的。
tuple1 = ('a',) # 当我们定义元组只有一个值时不要忘记后面的逗号
tuple2 = ('woodman', '2017', l, t2) # 元组中可以包含列表和元组
tuple3 = () # 定义空元组
元组的访问、切片、运算与list列表一样
2.3 set集合
无序不重复元素的序列 set(('apple',)) set(('apple','pear','banana'))
2.4 dict字典
定义:字典的每个值都具备自己独有的名称即键(key),每个key都有对应的值(value),字典中的key和value必须成对出现。整个字典包括在花括号‘{}’中,它的每个键值对使用冒号(:)分割,每对值之间用逗号(,)分割,一个key:value 算作一个值。
dict字典用的键(key)必须是唯一的,但值则不必。一个字典中不能出现相同名称的键(key),但值能相同,值可以是任何数据类型(字符串、数字、元组、列表、字典等)。dict的最大特点是查找速度快,无论dict有10个元素还是10万个元素,查找速度都一样
dict1 = {'a': 344323, 2.5: True, 'Bobo': ['a', 3, '阿奇'],233424: {'Alan': 99}}
访问:
print(dict1[2.5])通过 key 访问 dict 的 value,只要 key 存在,dict就返回对应的value。如果key不存在,会直抛出 KeyError 异常(避免KeyError错误:第一种使用 key in dict 选判读字典中是否存在此key;另一种是dict自带的get方法dict.get(key),在Key不存在的时候,返回None。) print(dict1.get(2.5))
dict.keys() # 获取所有键key的迭代器
dict.values() # 获取字典所有的值value的迭代器
新增与修改:
dict1[key] = value 当key不存在字典中时为新增值,存在则是修改它的值
dict1.update(otherdict) 批量更新或增加值,根据otherdict字典更新dice字典,otherdict中有dict1没有的值就新增,dict1中有的值就修改为otherdict中的值
注意:key一旦定义就不能修改
删除:
dict.pop(key) 删除对应键值对,返回移除值的values
dict.clear() 清空dict,dict能访问为空
del dict[key] 删除对应键值对
del dict 删除dict,dict无法访问
遍历:
通过key遍历 for key in dict1:
print(dict1[key])
通过dict.items遍历 for key, value in dict1.items():
print(key, ':', value)
字典常用函数&方法
len(dict) 计算字典元素个数,即键的总数
str(dict) 输出字典,以可打印的字符串表示
dict.clear() 删除字典内所有元素
dict.copy() 返回一个字典的浅复制
dict.fromkeys() 创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值
dict.get(key, default=None) 返回指定键的值,如果值不在字典中返回default值
dict.items() 以列表返回可遍历的(键, 值) 元组数组
dict.keys() 以列表返回一个字典所有的键
dict.setdefault(key, default=None) 和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default
dict.update(dict2) 把字典dict2的键/值对更新到dict里
dict.values() 以列表返回字典中的所有值
pop(key[,default]) 删除字典给定键 key 所对应的值,返回值为被删除的值。key值必须给出。 否则,返回default值。
popitem() 随机返回并删除字典中的一对键和值(一般删除末尾对)
格外注意
1、字典的键值对是无序的(Python3.6 开始有序),值可修改,定义字典时键值(key=>value)必须成对出现;
2、字典的键(key)不可以重复,键重复时值以最后一个为准;
3、字典的键必须不可变,所以可以用数字,字符串或元组充当,而不能用列表等;
Python 字典操作进阶——http://www.imooc.com/article/36677(以后学习)
str ="runoob.com"
print(str.isalnum())# 判断所有字符都是数字或者字母 ,输出False
print(str.isalpha())# 判断所有字符都是字母,输出False
print(str.isdigit())# 判断所有字符都是数字,输出False
print(str.islower())# 判断所有字符都是小写,输出True
print(str.isupper())# 判断所有字符都是大写,输出False
print(str.istitle())# 判断所有单词都是首字母大写,像标题,输出False
print(str.isspace())# 判断所有字符都是空白字符、\t、\n、\r,输出False