Python中的“四大才子”(字符串列表字典集合)
Posted Mr_Xia
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python中的“四大才子”(字符串列表字典集合)相关的知识,希望对你有一定的参考价值。
前戏:在python中把数据序列分为可变(mutable)和不可变(immutable)两种
不可变:string、int、float、tuple
特点:相同对象只是占用一个内存地址,不管有多少个变量引用它,例如a=1,b=1
由于是不可变的,每次必须创建新的对象,之前不用的对象如果没有引用指向它,Python垃圾回收机制会自动清理掉
可变:list、dict
特点:相同对象,每次引用它都会在内存中开辟一块新地址来保存它,但是当我们对他的值进行操作时,内存地址是不会发生变化的
总结:python中不可变数据类型一旦对变量的值进行改变,相当于重新建立一个对象,所以内存地址也会发生改变;
可变数据类型变量的值是可以改变的不会引起内存地址的变化,但是如果值被多个变量引用的话,每个变量都会开辟一块地址
一、字符串(string)
1、str的切片
1 name="hello word,abcdefgWX!!!"
str[::]读取操作
2 print(name[0],name[1])
capitalize(self)方法,首字母大写
3 print(name.capitalize())#打印Hello word,wx开头首字母大写,其余小写
casefold(self)大写转小写
4 print(name.casefold())#把字符串大写转成小写
5 # casefold() 方法是Python3.3版本之后引入的,其效果和 lower() 方法非常相似,
6 # 都可以转换字符串中所有大写字符为小写。
7 # 两者的区别是:lower() 方法只对ASCII编码,也就是‘A-Z’有效
8 # 对于其他语言(非汉语或英文)中把大写转换为小写的情况只能用 casefold() 方法。
center(width,"")
9 print(name.center(20,"*"))#把字符串居中,width=20字符串的总宽度 fillchar 填充字符
10 # name.center(self,width,fillchar)
count(sub,start,end)
11 print(name.count("l"))#统计字符串中字符出现的次数,也可以指定位置 默认从0到最后
12 print(name.count("d",0,15))#1count(sub,start,end)
13 print(name[0:15].count("d"))#2
encode("utf-8")字符串转成bytes
14 print(name.encode().decode()) #字符转成字节byte类型
endswith(sub,start,end)、startswith(sub,start,end)
15 print(name.endswith("!!!")) #判断是否以指定字符结尾 返回bool值,也可指定位置判断
16 print(name.endswith("rd",0,10))#end=10 不包括10 到第9位
17 print(name[:10],name[:10].endswith("rd"))
55 print(h.startswith("h")) #判断一指定字符开头
56 print(h.startswith("h",0,2))
expandtabs(tabzise)把字符串中的 tab 符号(\'\\t\')转为空格
19 # Python expandtabs() 方法把字符串中的 tab 符号(\'\\t\')转为空格,
20 # tab 符号(\'\\t\')默认的空格数是 8。
21 name2="abc\\tqwer"
22 print(name2.expandtabs())#默认tabsize=8,从字符串0开始数到\\t位置补5个空格
23 print(name2.expandtabs(16))
find(self,sub,start,end)查找元素位置,返回索引值,不存在返回-1
25 print(name.find("l")) #查找字符串元素位置,返回索引值,查不到返回-1
26 print(name.find("l",3,5))#指定查找范围
index(sub,start,end)、rindex()
27 print(name.index("l")) #输出索引值
28 print(name.index("o",2,9))#指定范围
27 print(str1.rindex("D",2,11))#从最右边开始找某个字符,输出索引值
isalnum()、isnumeric()
29 a="1223wew"
30 print(a.isalnum()) #判断是否包含数字
41 print(name.isnumeric());#判断是否有纯数字组成
isalpha()
31 b="sadsd"
32 print(b.isalpha())#检查字符串是否为纯字母
isdecimal() 是否为十进制字符
33 c=u"132323"
34 print(c.isdecimal())#是否只是包含十进制字符
35 c2=u"asdd3232"
36 print(c2.isdecimal())
isidentifier()
37 print(name.isidentifier()) #判断字符串是否已字母开头
38 print(a.isdigit() #检查是否为纯数字
find()、rfind()查找元素,output索引值
39 c="adsdsd8989"
40 print(c.find("w"))
26 print(str1.rfind("D",2,11))#从最右边开始找某个字符,输出索引值
isprintable()
42 print(name.isprintable()) #判断是否可打印字符串
istitle()
43 print(name.istitle());#判断字符串是否为一个标题
isupper()、islower()
44 print(name.isupper())#判断字符串是否都是大写
print(name.islower())#判断字符串是否都为小写
isspace()
45 print(name.isspace())#字符串是否只由空格组成
join(),将字符串用指定字符生成新的字符串
1 a=("h","l","l")
2 b="k"
3 c="nihao"
4 print(b.join(c)) #将字符串用指定的字符链接成新的字符串
output"nkikhkako"
5 print(b.join(a))
output"hklkl"
just(width,"")对齐
6 print(c.ljust(20,"_"))#字符串左对齐,指定20宽度,后边以_填充
7 print(c.rjust(20,"-"))
maketrans(oldsub,newsub)、translate(sub)
8 c1=c.maketrans("n","@") #将字符串某个字符用指定元素代替 与translate结合使用
9 print(c.translate(c1)) #解密
output:"@ihao"
upper()转大写、lower()转小写
10 str1="ASADSASDsadsD1"
11 print(str1.lower()) #转成小写
12 print(str1.upper()) #转成大写
partition(sub)指定字符分割,返回一个元组类型
14 # partition() 方法用来根据指定的分隔符将字符串进行分割。
15 # 如果字符串包含指定的分隔符,则返回一个3元的元组,
16 # 第一个为分隔符左边的子串,第二个为分隔符本身,第三个为分隔符右边的子串。
17 print(str1.partition("D"))
output:("ASA","D","SASDsadsD1")
18 print(str1.rpartition("D")) #从右往左找字符串开始分割
output:(\'ASADSASDsads\', \'D\', \'1\')
replace()字符串替换
20 # replace() 方法把字符串中的 old(旧字符串) 替换成 new(新字符串)
21 # 如果指定第三个参数max,则替换不超过 max 次。
22 # str.replace(old, new[, max])
23 #可以用来改字符串内容
24 print(str1.replace("A",2)) #指定替换成几个,默认全都替换,
tite()转换成标题
28 e="sd dsd 23 dsd "
29 print(e.title())#转换成标题
output:"Sd Dsd 23 Dsd "
split(sub,num)、rsplit()返回一个列表
31 # split(sub,num)通过指定分隔符对字符串进行切片,对指定分割符为空值代替
32 # 如果参数num 有指定值,则仅分隔 num 个子字符串
33 f="hellowordlll23"
34 print(f.split("l",2))#分割2个l
output:["he","","oword1ll23"]
35 print(f.rsplit("l",2))#从右找指定字符开始分割
output:["hellowordl","","l23"]
strip()移除字符串头尾指定的字符(默认为空格)。
37 # Python strip() 方法用于移除字符串头尾指定的字符(默认为空格)。
38 # strip()方法语法:
39 # str.strip([chars]);
40 g=" sdsd32,dad sad $"
41 h="helloh"
42 print(g.strip())
43 print(g.strip("$").strip())
44 print(h.strip("h"))
45 h1="ohelloo"
46 print(h1.rstrip("o"))#去掉字符串最右边的字符
spliitlines(keepends)
48 #Python splitlines() 按照行(\'\\r\', \'\\r\\n\', \\n\')分隔,
49 # 返回一个包含各行作为元素的列表,如果参数 keepends 为 False,不包含换行符,
50 # 如果为 True,则保留换行符。最终返回一个列表
51 h2="sas\\nsad\\rsads"
52 print(h2.splitlines())
53 print(h2.splitlines(True)) #以换行符分割成一个列表
swapcase()
58 i="dsds212ASDSDS"
59 print(i.swapcase()) #大小写互换
zfill()
61 print(i.zfill(20)) #指定字符串长度,右对齐不够在字符串左边补0
2、格式化字符串
2.1%是格式化的操作符,有以下操作符
格式化符号 |
说明 |
%c |
转换成字符(ASCII 码值,或者长度为一的字符串) |
%r |
优先用repr()函数进行字符串转换 |
%s |
优先用str()函数进行字符串转换 |
%d / %i |
转成有符号十进制数 |
%u |
转成无符号十进制数 |
%o |
转成无符号八进制数 |
%x / %X |
转成无符号十六进制数(x / X 代表转换后的十六进制字符的大小写) |
%e / %E |
转成科学计数法(e / E控制输出e / E) |
%f / %F |
转成浮点数(小数部分自然截断) |
%g / %G |
%e和%f / %E和%F 的简写 |
%% |
输出% (格式化字符串里面包括百分号,那么必须使用%%) |
注意:
1、% s str()得到的字符串是面向用户的,具有较好的可读性
2、%r repr()得到的字符串是面向机器的 eval(repr(str))
2.2、格式化辅助操作符
通过"%"可以进行字符串格式化,但是"%"经常会结合下面的辅助符一起使用。
辅助符号 |
说明 |
* |
定义宽度或者小数点精度 |
- |
用做左对齐 |
+ |
在正数前面显示加号(+) |
# |
在八进制数前面显示零(0),在十六进制前面显示"0x"或者"0X"(取决于用的是"x"还是"X") |
0 |
显示的数字前面填充"0"而不是默认的空格 |
(var) |
映射变量(通常用来处理字段类型的参数) |
m.n |
m 是显示的最小总宽度,n 是小数点后的位数(如果可用的话) |
示例:
1 num = 10
2 print ("%d to hex is %x" %(num, num))#a
3 print ("%d to hex is %X" %(num, num))#A
4 print ("%d to hex is %#X" %(num, num))#0XA x/X十六进制的大小写
5 print ("%d to hex is %#x" %(num, num))#0xa
6 # 浮点数
7 f = 3
8 f2=3.23
9 print("value of f is: %.4f" %f) #保留4位小数
10 print("value of f is: %e" %f2)
11 # 指定宽度和对齐
12 students = [{"name":"Wilber", "age":27},
13 {"name":"Will", "age":28},
14 {"name":"June", "age":27}]
15 print("name:%10s, age:%10d"%(students[0]["name"], students[0]["age"]))
16 #%10s代表指定name的value宽度为10,不够在左边补空格,右对齐
17 print("name:%-10s, age:%-10d"%(students[1]["name"], students[1]["age"]))
18 #与上边相反,左对齐,
19 print("name:%*s, age:%*d"%(10,students[2]["name"], -10, students[2]["age"]))
20
21 # dict参数
22 for student in students:
23 print("%(name)s is %(age)d years old" %student)
24 print(student["name"],student["age"])
2.3、字符串的拼接
1 \'\'\' 2 print("---请输入你的姓名和密码---") 3 username=input("username:") 4 password=input("password:") 5 print(username,password) 6 \'\'\' 7 #python2里的raw_input和python3里一样 8 print("---请输入员工信息employee information---") 9 name=input("name:") 10 age=int(input("age:")) 11 job=input("job:") 12 salary=int(input("salary:")) 13 #字符串的拼接\'\'\'+....+\'\'\' 14 \'\'\' 15 em_information=\'\'\' 16 em_name:\'\'\'+name+\'\'\' 17 em_age:\'\'\'+age+\'\'\' 18 em_job:\'\'\'+job+\'\'\' 19 em_salary:\'\'\'+salary+\'\'\' 20 \'\'\' 21 print(em_information) 22 \'\'\'
23 #第2种方法采用%s格式化输出 24 #eg:%s,表示格化式一个对象为字符 比如: "Hello, %s"%"world" => "Hello, world" 这个一般用在格式化输出上 25 #%f 表示格式化一个对象为浮点型 26 em_information1=\'\'\' 27 em_name1:%s 28 em_age1:%d 29 em_job1:%s 30 em_salary:%d 31 \'\'\'%(name,age,job,salary) 32 print(type(name,),type(age)) #打印输出变量类型 33 print("em_information1:",em_information1)
34 #第3种方法,采用format()关键字参数 35 em_information2=\'\'\' 36 em_name2={_name} 37 em_age2={_age} 38 em_job2={_job} 39 em_salary2={_salary} 40 \'\'\'.format(_name=name, 41 _age=age, 42 _job=job, 43 _salary=salary) 44 print(em_information2)
45 #第4种方法,format()位置参数 46 em_information3=\'\'\' 47 em_name3={0} 48 em_age3={1} 49 em_job3={2} 50 em_salary3={3} 51 \'\'\'.format(name,age,job,salary) 52 print("em_information3:",em_information3)
补充:
infor=["Wilber",28,"it",9000]
print("""name={0[0]}
age={0[1]}
it={0[2]}
salary={0[3]}""".format(li))
2.4字符串的迭代和一些风骚的操作
1 a="hello"
2 b="hello we"
3 c=""
4 以上是关于Python中的“四大才子”(字符串列表字典集合)的主要内容,如果未能解决你的问题,请参考以下文章