Python Day 07 重点知识总结
一.字符串
一 概述
- 字符串重复 获取某个字符 字符串的切片 字符串的遍历 身份判断 与列表操作相似
- 还是要记住 for index,i in enumerate(s) 还是比较有用的
- 关于格式化输出
在之前的总结中有详细的解释 这里不过多赘述
本人使用最多的 为format方法 python3.5以上也由f‘’ 的方法 使用方法相似 详情参看之前的总结 - 关于常用的转义字符
通过\ 来改变后面字母或者特殊字符的含义
\t 相当于tab键
\n 相当于enter键
\b 相当于backspace
#1. str1 = ‘hello\tworld’ #hello world
#2. str2 = ‘hello\nworld’ #hello
world
#注意;如果一个字符串中有多个字符需要转义,则可以在字符串的前面添加r,可以避免对字符串中的每个特殊字符进行转义
print(r"C:\Users\Administrator\Desktop")
二.关于字符串常用功能[重点]
-
len() 计算字符串的长度 #空格等也包括在内
count() 计算某个字符在该字符串中出现的次数 -
关于大小写的转换
- lower() 将字符串中的大写字母转化为小写 #这里如果字符串中出现数字或者其他字符 不给予改变
- upper() 将字符串中的小写字母转化为大写 #同样 其他字符不与改变
- swapcase() 将该字符串中的大写字母编程小写 将小写字母转化成大写 其他的字符不改变
- capitalize() 将一句英文中的首个单词的第一个字母转化成大写 # 将除了第一个单词的第一个字母之外的所有字母均转化为小写
- title() 将一句英文中的每个单词的首字母变成大写 #同样 除了单词的首字母之外 其他的字母均转化为小写
-
关于字符串转成数字
- 这里介绍一个骚操作
#eval(str) 将str转换为有效的表达式,参与运算,并返回运算结果 可以避免由int 和 float 转化过来由于各种原因导致的无法计算
#举个例子:
#print(int(“12+3”)) #ValueError: invalid literal for int() with base 10: ‘12+3’
#print(eval(“12+3”)) #15 - 字符串和数字之间的转化需要注意符号
eval和int 会将数字前面的-号看成 负号 处理 在转换过来之后看作负号
- 这里介绍一个骚操作
-
关于字符串格式的填充[了解即可]
这些功能其实都可以使用format来实现- center(width[,fillchar]) 返回一个指定宽度的居中字符,width是填充之后整个字符串的长度,fillchar 为所需要填充的字符串,默认使用空格填充
print(str1.center(10,"*")) - ljust(width[,fillchar]) 返回一个指定宽度的字符串,将原来的字符串向左对齐 width是填充之后整个字符串的长度
- rjust 参照ljust 向右对齐
- zfill(width) 返回一个指定宽度的字符串 将原来的字符串向右对齐 其余的部分使用数字0填充
- center(width[,fillchar]) 返回一个指定宽度的居中字符,width是填充之后整个字符串的长度,fillchar 为所需要填充的字符串,默认使用空格填充
-
字符串查找[掌握]
- find
- find(str[,start,end]) 从左往右依次检测 找到从左往右第一次出现的第一个字母(or数字) 返回其索引
如果没有找到(即该需查字符串不出现在原字符串中 则返回默认值 -1)
str2 = “abcdefhello123hello”
print(str2.find(“hello”)) #6
print(str2.find(“yyy”)) #-1
print(str2.find(“e”,3,10)) - rfind 参考find 区别为从右向左进行查找 返回的也是找到的从左往右的第一个字母的索引
- find(str[,start,end]) 从左往右依次检测 找到从左往右第一次出现的第一个字母(or数字) 返回其索引
- index
- index()
- rindex()
使用方法与find相似 唯一的区别即为没有找到相印字符的返回值 find返回的是-1 而index会直接报错 所以这也是为什么能使用find绝不是用index的原因 通常情况下也是使用find居多
- find
-
提取 [至今未用过 不知道是不是重点]
- strip(str) 使用str作为条件提取字符串 除了两头指定的字符串
#str1 = “********today is *a good day"
#print(str1.strip("”)) #today is *********a good day - lstrip(str) 提取字符串 除了左边的字符串
- rstrip(str) 提取字符串 除了右边的指定字符串
- strip(str) 使用str作为条件提取字符串 除了两头指定的字符串
-
字符串的分割与合并[重点]
- 分割
- split(str[,num]) 将str作为分隔符切割原字符 结果为一个列表,如果制定了num 则仅使用num个字符截取字符串
print(str3.split(" “)) #[‘today’, ‘is’, ‘a’, ‘good’, ‘day’]
print(str3.split(” ",2)) #[‘today’, ‘is’, ‘a good day’] - splitlines(flag) 按照换行符进行分割 结果为一个列表 这个很有用
#flag:False或者不写,则表示忽略换行符;如果True,则表示保留换行符
- split(str[,num]) 将str作为分隔符切割原字符 结果为一个列表,如果制定了num 则仅使用num个字符截取字符串
- 合并
join(list) 将原字符作为连接符号,将列表中的元素分别连接起来 结果为字符串 作用和split是相反的
str5 = ""
list1 = [“shangsan”,“lisi”,“jack”]
print(str5.join(list1)) #'shangsanlisi*jack’
- 分割
-
替换 [骚操作 得记下来]
-
replace(old,new[,max]) 用new的字符串替换old max表示可以替换的最大次数 默认为替换所有
str1 = “this is a easy test test test test”
print(str1.replace(“test”,“exam”)) #“this is a easy exam exam exam exam”
print(str1.replace(“test”,“exam”,2)) #‘this is a easy exam exam test test’ -
maketrans() 目前没有用过
#使用场景:在一定情境下,可以实现字符串的简单加密,加密规则可以自定义
#maketrans() 创建字符映射的转换表,结果为字典,通过key:value的方式
#translate(table)t = str.maketrans(“aco”,“123”)
print(t) #{97: 49, 99: 50, 111: 51}str2 = “today is a good day”
print(str2.translate(t)) #t3d1y is 1 g33d d1y
-
-
判断 [重点]
- isalpha() 如果字符串中至少包含一个字符并且所有的字符都是字母 才会返回True
- isalnum() 如果字符串中至少包含一个字符 并且所有的字符都是字母或者数字的时候才能返回True
- isupper() 如果字符串中至少包含一个字符并且出现的字母必须是大写字母才能返回True 数字的出现没有影响
- islower() 参见isupper
- isdigit() [掌握!] 如果字符串中只包含数字 则返回True
-
前缀和后缀 [这个用到了 记下来]
- startswith
str1 = “helloPython”
print(str1.startswith(“hello”)) #True - endswith
print(str1.endswith(“on”)) #True
- startswith
-
ASCII
ord() 可查询该字符/数字对应的ASCII 码
chr() 可将ASCII 码对应相应的字符或数字