目录
一、使用os模块写一个递归调用打印出E:\\home下的所有文件名的绝对路径
二、用正则方法实现统计指定字符如"python"的所在文件的行数?(文件中的python字符)
四、统计指定文件中字符出现的次数(如中error和warning单词出现的次数)
关联文章
《第六部分:6.1-Python之基本操作+Python常见的运算》
《第六部分-练习题2:使用递归-模块-自定义函数(8道题)》
《第六部分-练习题3:使用open()函数处理文件(3道题)》
《第六部分-练习题4:random函数生成随机数(3道题)》
《第六部分-练习题5:re正则使用统计行数-判断手机号(5道题)》
一、使用os模块写一个递归调用打印出E:\\home下的所有文件名的绝对路径
注意需要应用模块:
import os
import re
代码部分:
# 1,使用os模块写一个递归调用打印出E:\\home下的所有文件名的绝对路径
#------------------------------------------------------------------(1)
import os
import re
url=r"D:\QGFile\Projects\PythonProjects"
listAll=[]
def getFileUrl(url):
for i in os.listdir(url):
newPath=os.path.join(url,i)
if os.path.isfile(newPath):
listAll.append(newPath)
print(newPath)
else:
getFileUrl(newPath)
return listAll
#调用函数
getFileUrl(url)
二、用正则方法实现统计指定字符如"python"的所在文件的行数?(文件中的python字符)
如:E:\\python文件中test.txtwen
注意需要应用模块:
import os
import re
代码部分:
# # 2,用正则方法实现统计E:\\python文件中指定字符如"python"的行数?(文件中的python字符)
#------------------------------------------------------------------------------(2)
fileUrl=r'D:\QGFile\Projects\PythonProjects\python\shenSir\testPython.txt'
selectStr='python'
def fileCount(url,string):
with open(url,'r',encoding='utf-8') as file:
count=0
listStr=[]
listNum=[]
#(1)首先拿到文件中所有的行数
allLine=file.readlines()
#(2)通过正则找出关键字,并统计出行数
for i in allLine:
if len(re.findall(string , i))>0:
count+=1
listStr.append(i)
listNum.append(allLine.index(i)+1)
print(listNum)
return [count,listStr,listNum]
#调用函数
print('出现关键字行数:{0[0]} ,\n其中行号如下:{0[2]}'.format(fileCount(fileUrl,selectStr)))
三、随机生成11位数,并判断是否是电话号码
注意需要应用模块:
import os
import re
代码部分:
# 3,使用正则完成市面上手机规则的编写,随机生成11位数字然后通过正则匹配出符合规则的11为数手机号码?
#规则:第一位必须是1、第二位不能是0-2,、第三位则是0-9
#------------------------------------------------------------------------------(3)
import string
import random
import re
def judgeTelPhone():
phoneNum=''
#(1)随机生成11位纯数字
for i in range(11):
phoneNum+=random.choice(string.digits)
#(2)使用正则匹配手机编写规则并打印出来(不符合一直递归走)
str1=re.findall('^1[3-9][0-9]\d{8}',phoneNum)
if len(str1)>0:
return str1
else:
return judgeTelPhone()
#调用函数
print('随机生成的手机号是:'+judgeTelPhone()[0])
四、统计指定文件中字符出现的次数(如中error和warning单词出现的次数)
注意需要应用模块:
import os
import re
代码部分:
# 4,用正则实现写一段代码统计E:\\log文件中error和warning单词出现的次数分别为几次?
#------------------------------------------------------------------------------(4)
fileUrl=r'D:\QGFile\Projects\PythonProjects\python\shenSir\testPython.txt'
listStr=['error','warning']
def fileListCount(url,strList):
with open(url,'r',encoding='utf-8') as file:
count=0
dicStr={}
#(1)拿到文件转字符串
allLine=file.read()
print(file.read())
#(2)通过正则找出关键字,并统计字符出现次数
for i in set(strList):
str1 = re.findall(i, allLine)
dicStr.setdefault(i,len(str1))
print(dicStr)
#调用函数
fileListCount(fileUrl,listStr)
五、通过指定的整数列表,计算出目标值的可能性
# 5、给定一个整数列表nums和一个整数目标值target,请你在该列表中找出“和为目标值target的两个整数,
# 并返回他们的下标”,你可以假设每种输入只会对应一个答案,但是,列表中同一个元素的下标在答案里不能重复出现,
# 可以按照任意顺序返回答案
#--------------------------------------------
# 示例:
# 输入:nums = [2,7,11,15],target = 9
# 输出:[0,1]
# 解释:因为nums[0]+nums[1] == 9,返回[0,1]
#------------------------------------------------------------------------------(4)
代码部分:
# 5、给定一个整数列表nums和一个整数目标值target,请你在该列表中找出“和为目标值target的两个整数,
# 并返回他们的下标”,你可以假设每种输入只会对应一个答案,但是,列表中同一个元素的下标在答案里不能重复出现,
# 可以按照任意顺序返回答案
#--------------------------------------------
# 示例:
# 输入:nums = [2,7,11,15],target = 9
# 输出:[0,1]
# 解释:因为nums[0]+nums[1] == 9,返回[0,1]
#------------------------------------------------------------------------------(4)
nums,target= [2,7,10,6,-1,10,8,1], 9
def jiSuanTarget(nums,target):
listAll=[]
for i in range(len(nums)):
for j in range(len(nums)-i-1):
if nums[i]+nums[i+j+1]==target:
listAll.append((i,j+i+1))
print(listAll)
jiSuanTarget(nums,target)