找回密码
 立即注册

推荐阅读

  • 便民服务
  • 关注我们
  • 社区新手
本帖最后由 广州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,11,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()

分享至 : QQ空间
收藏

0 个回复

您需要登录后才可以回帖 登录 | 立即注册