本帖最后由 广州32班-王远好 于 2021-9-7 21:39 编辑
18、存在一个文件, 文件名test.txt
内容如下:
01 success
02 fail
03 fail
04 success
....请使用Python语言编写程序实现统计该文件中
有多少个success
多少个fail的功能?
import re
def ou(path):
with open(path,'r',encoding='utf-8')as file:
all=file.read()
# print(all)
p=re.findall('success',all)
k=re.findall('fail',all)
print('文件中的success有{}个,fail有{}个'.format(len(p),len(k)))
ou('D:/PycharmProjects/duoceshi32/dcs32/test.txt')
19、一个txt文件中已知数据为:
C4D
C4D/maya
C4D
C4D/su
C4D/max/AE
统计每个字段出现的次数,比如C4D,maya,su,max,AE 请用最熟悉的语言或者伪代码实现该需求
方法一:
import re
def count_file(path):
with open(path,'r',encoding='utf-8')as file:
all=file.read()
kill=re.findall('C4D',all)
kool=re.findall('maya',all)
oll=re.findall('su',all)
pill=re.findall('max',all)
uill=re.findall('AE',all)
print('文件中有{}个C4D,{}个maya,{}个su,{}个max,{}个AE'.format
(len(kill),len(kool),len(oll),len(pill),len(uill)))
count_file(r'D:/PycharmProjects/duoceshi32/dcs32/write.txt')
方法二:
o=open(file=r'D:/PycharmProjects/duoceshi32/dcs32/write.txt',mode='r',encoding='utf-8')
test=o.read()
# print(test)
a=test.split('\n') #通过对文件内容的'',进入得到每一行的结果作为列表
# a['C4D', 'C4D/maya', 'C4D', 'C4D/su', 'C4D/max/AE']
# print(a)
list1=[]
for i in a: #这里的i和j循环,目的是获取文件中所有字段的名称
b=i.split('/')
# print(b)
for j in b:
if j not in list1:
list1.append(j)
print(list1)
for k in list1: #k循环做的事,直接通过字段的名称进行统计字段出现的次数
num=test.count(k)
print('{}出现的次数{}'.format(k,num))
20、统计一个文件的行数,以e:\\write.txt文件为例(内容自己建)
def count_file(path):
with open(path,'r',encoding='utf-8')as file:
all=file.readlines()
print(len(all))
print('文件的行数为{}行'.format(len(all)))
count_file('D:/PycharmProjects/duoceshi32/dcs32/write.txt')
o=open(file=r'D:/PycharmProjects/duoceshi32/dcs32/write.txt',mode='r',encoding='utf-8')
test=o.readlines()
# print(test)
print('文件中一共有{}'.format(len(test)))
21、使用os模块写一个递归调用打印出e:\\home下的所有文件名的绝对路径?
import os
def get_path(path):
all=os.listdir(path)
for i in all: #对目录底下的文件或者目录进行全部的列出
newpath=os.path.join(path,i) #把当前目录名和目录地下的文件或者目录进行拼接
if os.path.isfile(newpath): #判断如果拼接之后是否为目录,就把文件绝对路径打印出来
print(newpath)
else:
get_path(newpath) #否则重复执行当前函数
get_path('D:/PycharmProjects/duoceshi32/dcs32')
22、用正则方法实现统计e:\\python文件中指定字符如"python"的行数?(文件中的python字符)
假设里面的数据为:
pythonelloerror
warnipythonngerror
warning
errorwapythonrning
import re
def fun22(path,pattern):
o=open(file=path,mode='r',encoding='utf-8')
all=o.readlines() #通过readlines获取文件中所有的行,作为列表all
num=0 #初始化统计值
for i in all: #对列表all进行遍历
a=re.findall('python',i) #把列表all中的元素(文件的每一行)的规则字符串取出来,到一个列表中
if pattern in a: #如果规则字符串在列表a中,那么就进行统计值加1
num+=1
print(num)
fun22(path='D:/PycharmProjects/duoceshi32/dcs32/python.txt',pattern='python')
23、使用正则完成市面上手机规则的编写、随机生成11位数然后通过正则匹配出
符合规则的11位数手机号码?(手机号:11位)
import random,string,re
def telphone():
phonenum=''
for i in range(11):
# print(i)
phonenum +=random.choice(string.digits)
# print(phonenum)
str1=re.findall('^1[34578][0-9]\d{8}',phonenum)
if len(str1)>0:
return str1
else:
return telphone()
print('随机生成的手机号是:' + telphone()[0])
import random,string,re
def telphone():
phonenum='' #初始化一个空字符串用来接收手机号码
for i in range(11): #这里的for循环时取11位的数字加到字符串中
# print(i)
phonenum +=random.choice(string.digits)
# print(phonenum)
if re.match('^1[34578][0-9]\d{8}',phonenum): #对for循环取到随机11位数进行正则匹配
return phonenum #匹配成功则返回该字符串
else:
return telphone() #匹配失败则重新执行该生成随机手机号的函数
print('随机生成的手机号是:' + telphone())
24、用正则实现写一段代码统计e:\\log文件中error和warning单词出现的次数分别为几次?
文件内容如下:
warningabchelloerror
warningerror
warning
errorwarningwarning
import re
def count(path):
dic={}
o=open(path,'r',encoding='utf-8')
all=o.readlines()
err=re.compile('error')
war=re.compile('warning')
for i in all:
a=err.findall(i)
# print(a)
b=war.findall(i)
for j in a:
dic[j]=dic[j]+1 if j in dic else 1
for k in b:
dic[k]=dic[k]+1 if k in dic else 1
print(dic)
count(r'D:/PycharmProjects/duoceshi32/dcs32/test.txt')
25,随机生成市面上的手机号,写入本地文件text.txt
import random,string,re
def telphone():
phonenum=''
for i in range(11):
phonenum +=random.choice(string.digits)
str1=re.findall('^1[3-9][0-9]\d{8}',phonenum)
if len(str1)>0:
return str1
else:
return telphone()
print('随机生成的手机号是:' + telphone()[0])
o=open(file=r'D:\PycharmProjects\duoceshi32\dcs32\test.txt',mode='a',encoding='utf-8')
o.write('\n随机生成的手机号是:' + telphone()[0])
o.close()
26,用Python设计一个小应用 功能如下:
1.接受用户输入数字(命令行输入即可)用户随机可以输入使用逗号分隔
2.只能输入俩组 用户自定义输入
3.Python收到俩次输入后,把俩次输入的数据解析为int类型列表,去重后,按照从小到大进行排序输出
示例:第一次输入:1,2,4,5,6 第二次输入:5,4,3,1,1,10,8 输出结果:1,2,3,4,5,6,8,10
op=input('请输入数值:1,2,4,5,6')
vp=input('请输入数值:5,4,3,1,1,10,8')
print(op)
def get_input():
str1 = input('第一次输入:')
str2 = input('第二次输入:')
list1=str1.split(',') #对第一次输入的字符串通过split分割',',转换为列表
list2=str2.split(',') #对第一次输入的字符串通过split分割',',转换为列表
list3=[] #初始化一个空列表[]
for i in list1: #把第一次输入的数字字符转换为整型,添加到list3
list3.append(int(i))
for k in list2:
list3.append(int(k))
set1=set(list3) #对list3转换为集合去重,而且整型集合是自动排序,升序
s=str(set1) #对集合set转换为字符串
s=s.replace('{','') #把字符串的'{'去除
s=s.replace('}','') #把字符串的'}'去除
print(s)
get_input()
|
|