day3笔记

.字符串常用方法

#s="hahaha."
# print(s.count("a"))#元素出现次数
# print( s.index("b",2))#取下标的 2是指定位置开始找 不指定从第一个开始找
# print(s[0])#通过下标取值
#s.find("b")#找下标 寻找不存在的元素 默认返回-1 index会报错
#print(s)
# print(s.strip())#默认去掉字符串两边的空格和换行符
# print(s.strip("."))#去掉指定的字符串
# print(s.lstrip(""))#去掉左边
# print(s.rstrip(""))#去掉右边
# print(s.startswith("1"))#是不是以1开头的 是返回ture 不是返回false
# print(s.endswith("com"))#以com# 结尾 是返回ture 不是返回false
# print(s.lower())#全部变成小写
# print(s.upper())#全部变成大写 HAHAHA.
# print(s.islower())#判断是不是全部小写
# print(s.isupper())#判断是不是全部大写
#s=[1,2,3,4,5,6,7]
#s="555"
#s="m"
#s="marry"
#print(s.zfill(5))#用来补0的 00555
#s.capitalize()#首字母大写 M
# print(s.replace("r","R"))#替换字符串 maRRy 可以替换字符串中空的字符串
# print(s.replace("r","R",1))#可以指定替换次数 maRry
# s="2"
# print(s.isdigit())#判断是否是纯数字 True
# print(s.center(50,"*"))#用来剧中 第一个是多长 第二个是用什么补齐************************2*************************
# # s.isalnum()
# s.isalpha()
# s=" "
# print(s.isspace())#判断是不是空格 True
# s="编号是,{},{}"
# print(s.format(1,2))#编号是,1,2
# s="编号是,{name},{age}"
# print(s.format_map({"name":1,"age":35}))#编号是,1,35
s="hahaha"
s1="---"
#如果是大小写字母,汉字,数字返回true,其他的字符串返回false
print(s.isalnum())#True
#如果是大小写字母,汉字返回true,其他的字符串返
print(s1.isalpha())#False
# s="z,b,r,l,n,h"
# s1="z b r l n h"
# s2="z.b.r.l.n.h"
# #s.split()分割字符串 转换成列表list
# print(s.split(","))#['z', 'b', 'r', 'l', 'n', 'h']
# print(s1.split())#['z', 'b', 'r', 'l', 'n', 'h']
# print(s2.split(","))#['z.b.r.l.n.h']
# l=['z', 'b', 'r', 'l', 'n', 'h']
#s="z,b,r,l,n,h"
#把列表里边的每一个元素连接起来变成一个字符串
# print(",".join(l))#z,b,r,l,n,h 把list里边的没一个元素用逗号连接起来
# print("=".join(l))#z=b=r=l=n=h

重点记忆的几种字符串方法

 二.字符串切片


#l=list(range(1,11))#[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
l=list(range(1,11))#[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
print(l[0:11])#顾头不顾尾[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
print(l[0:])#从0开始取到末尾
#print(l)
#步长
print(l[0:11:2])#各2个取一个 加上自己本身开始算[1, 3, 5, 7, 9]
print(l[::2])#[1, 3, 5, 7, 9]
print(l[::-1])#负数从后往前取[10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
print(l[0:11:-1])#[]步长用负数,前边也要用负数
print(l[-1:-11:-1])#[10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
print(l[-1:-6:-1])#[10, 9, 8, 7, 6]

三.判断  非空即真,非0即真

#非空即真,非0即真
True
False
S=""#False
L=[]#False
d={}#False
t=()#False
se=set()#False
num=1#True
num2=0#False
l1=["",""]#True
print(S)

实例:


 for i in range(3):
# choice=input("1,登陆,2,取钱,3,退出:").strip()
# if choice:#非空即真
# print("已经输入了")
# else:
# print("输入不能为空")
for i in range(3):
choice=input("1,登陆,2,取钱,3,退出:").strip()
if not choice:#非空即真 取反 choice not true not false
print("为空")
else:
print("已经输入了")

-1布尔类型


#布尔类型
#结果只返回True False

四.元组

l=(1,2,3)
#元组通过下标取值
#print(l[0])
# #循环元组
# for i in l:
# print(i)
# #元组不支持修改 值不变
# l[0]=3
# #方法
# l.index()#找下标
# l.count()#找个数
l2=(1,)#元组只有一个元素一定要加逗号,才能认定是元组
print(l2)

五.如何循环字典

usernames = ['xiaohei', 'xiaobai', 'xiaoming']
passwords = ['123456', '11111', '1']
d={'xiaohei': '123456', 'xiaobai': '11111', 'xiaoming': '1'}
for key in d:
value=d.get(key)
print("%s,%s"%(key,value))
# l = [
# ['xiaohei', '123456'],
# ['xiaobai', '11111'],
# ['xiaoming', '1']
# ]
# # list取值 二维数组才可以这样取值
# for a,b in l:
# print(a,b)

六.集合

# #集合可以去重
# #集合是无序的
# s={1,2,3,7,7,7,6,6,6}#{1, 2, 3, 4, 5, 6, 7}
# #print(s)
# l=[1,2,3,4,5,6,6,6,7,7,7,]
# l=list(set(l))
# print(l)#[1, 2, 3, 4, 5, 6, 7]
# # #定义空集合
# # s2=set()
# s.add(8)#添加元素
# print(s)#{1, 2, 3, 4, 5, 6, 7, 8}
# s.update({4,5,6})#把另一个集合加入这个集合
# print(s)
# s.remove(4)#删除指定元素{1, 2, 3, 5, 6, 7, 8}
# print(s)
#关系测试
#交集 并集 差集 对称差集
#取交集
# l1=[1,2,3,4]
# l2=[2,4,5,6]
# l1=set(l1)
# l2=set(l2)
# print(l1&l2)#取交集{2, 4}
# print(l1.intersection(l2))#取交集{2, 4}
# #并集 去重
# print(l1.union(l2))#{1, 2, 3, 4, 5, 6}
# print(l1|l2)#{1, 2, 3, 4, 5, 6}
# #差集
# print(l1-l2)#{1, 3} 在a集合里存在,在b集合里不存在
# print(l1.difference(l2))
# #对称差集
# print(l1^l2)#{1, 3, 5, 6} 把a集合和b集合里面相同的元素去掉,取剩下的
# print(l1.symmetric_difference(l2))
# l1=range(4,2)
# l2=[2,4,5,6]
# print(l1.issuperset(l2))#判断a集合是不是b集合的父集
# print(l2.issubset(l1))#判断a集合是不是b集合的子集

七.文件操作


 1,打开文件
# 2,读/写文件
# 3,关闭文件
f=open(r"a.txt.py","r",encoding="utf-8")#打开的模式 r w a
# result2=f.readline()#读文件只读一行
# result3=f.readlines()#读取文件里面所有的内容,返回的是一个list,每行的内容是list一个元素
# result=f.read()#读文件 获取文件里边的全部内容
print("result3",result3)
f.close()
#文件指针
#处理大文件的时候 循环一次取一次
# count=0
# for line in f:
# print(line)
# count+=1
# print(count)
#r是只读模式
#w写模式 把以前的内容清空掉 新文件用w 老文件不要用w
#新的文件如果没有,会自动创建新文件
f=open(r"a1.txt.py","w",encoding="utf-8")#打开的模式 r w a
f.write("wwwwww")#把之前内容替换掉了
l=["1234 ","56789 ","abcdef"]#换行
#f.writelines(l)#循环写 与用for循环结果一致
for i in l:
f.write(i)
f.close()

-1监控日志练习

1、监控,一直在运行,死循环,每分钟读一次文件
#2、第一次运行,读取文件所有的内容,从文件内容里面获取到ip地址,以及每个ip地址出现的次数
#4、记住当前指针的位置,下次从这个位置开始读
#5、判断每个ip地址出现的次数,如果大于50次,那么发短信报警
#6、等待60秒,继续重复上面的操作,读文件,获取内容
import time
point = 0 #最前面的位置

while True:
ip_list = {} # {ip:2 }
f = open('access.log',encoding='utf-8')
f.seek(point)#移动文件指针到哪个位置
for line in f:
ip = line.split()[0]
if ip not in ip_list:
ip_list[ip] = 1
else:
ip_list[ip] = ip_list[ip]+1
point = f.tell() #当前文件指针的位置
f.close()
for ip in ip_list:
count = ip_list.get(ip)
if count>=50:
print('ip地址【%s】有问题,请注意!'%ip)
time.sleep(60)
 
原文地址:https://www.cnblogs.com/dajiezi/p/12775482.html