本文实例讲述了python实现修改固定模式的字符串内容操作。分享给大家供大家参考,具体如下:
说明
字符串模式是开头可能有空格,之后可能存在多个小数点,然后后面跟着一个数字,数字可能是小数,数字后可能存在空格。
任务要求删去开头的小数点,如下:
" …78 " 修改为" 78 "
" …7.889 " 修改为" 7.889 "
“.9.8"修改为"9.8”
代码示例
注意这里正则的模式和分组的用法
import os import re testStr=r"...7.88 " pattern=re.compile(r'("lblank")+finalStr.group("realcontent")+finalStr.group("rblank") print("result is: {}".format(result))
输出:
<_sre.SRE_Match object; span=(0, 8), match='...7.88 '>
result is: 7.88
拓展
说明
用来处理样本用的。标签是一个txt文件包含了图片的内容,内容的模式是(空格*)+(.*)+(小数或者整数)+(空格凑齐位数)。
脚本实现功能是:将第二部分里面的小数点去除(用正则分组去),修正原本的标签文件,并将标签两边占位用的空格去掉,形成新的标签,将新标签文件和对应的图片移动到以标签长度命名的文件夹中。由于文件量有40w+,使用多进程处理。
拓展代码
import os import re from multiprocessing import Pool import shutil def getAllFilePath(pathFolder,filter=[".jpg",".txt"]): #遍历文件夹下所有图片 allCropPicPathList=[] allTXTPathList=[] #maindir是当前搜索的目录 subdir是当前目录下的文件夹名 file是目录下文件名 for maindir,subdir,file_name_list in os.walk(pathFolder): for filename in file_name_list: apath=os.path.join(maindir,filename) ext=os.path.splitext(apath)[1]#返回扩展名 if ext==filter[0] and ('_crop' in filename): allCropPicPathList.append(apath) elif ext==filter[1] and ('_crop' in filename): allTXTPathList.append(apath) return list(zip(allCropPicPathList,allTXTPathList)) #分析样本 对模式错误(即删去在开头空格和数字之间的.)的进行修正 def checkTxtContent(txtcontent,txtPath): pattern=re.compile(r'("point"))!=0: resultStr=finalStr.group("lblank")+finalStr.group("realcontent")+finalStr.group("rblank") with open(txtPath,'w') as fw: fw.write(resultStr) with open(r'E:\Numberdata\wrong.txt','a') as fw: fw.write(txtPath+"\n") print(txtPath,"is wrong!") return resultStr else: return txtcontent #移动图片到对应长度的文件夹 标签label进行修改 def dealSampleList(samplePathList,saveBaseDir): for samplePath in samplePathList: txtPath=samplePath[1] picPath=samplePath[0] newtxtStr="" with open(txtPath,'r') as fr: txtStr=fr.readline() newtxtStr=checkTxtContent(txtStr,txtPath) newtxtStr=newtxtStr.strip() # 创建对应的文件夹 saveDir=os.path.join(saveBaseDir,str(len(newtxtStr))) if not os.path.exists(saveDir): os.mkdir(saveDir) newTxtName=os.path.basename(txtPath) newPicName=os.path.basename(picPath) with open(os.path.join(saveDir,newTxtName),'w') as fw: fw.write(newtxtStr) shutil.move(picPath,os.path.join(saveDir,newPicName)) # print(newPicName,'is done!') if __name__ =='__main__': allFilePath=getAllFilePath(r'E:\Numberdata\4') # dealSampleList(allFilePath,r'E:\Numberdata\data') n_total=len(allFilePath) n_process=4 #8线程 #每段子列表长度 length=float(n_total)/float(n_process) indices=[int(round(i*length)) for i in range(n_process+1)] sublists=[allFilePath[indices[i]:indices[i+1]] for i in range(n_process)] #生成进程池 p=Pool(n_process) for i in sublists: print("sublist len is {}".format(len(i))) p.apply_async(dealSampleList, args=(i,r'E:\Numberdata\data')) p.close() p.join() print("All done!")
更多关于Python相关内容感兴趣的读者可查看本站专题:《Python字符串操作技巧汇总》、《Python数据结构与算法教程》、《Python列表(list)操作技巧总结》、《Python编码操作技巧总结》、《Python函数使用技巧总结》及《Python入门与进阶经典教程》
希望本文所述对大家Python程序设计有所帮助。
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。
更新日志
- 明达年度发烧碟MasterSuperiorAudiophile2021[DSF]
- 英文DJ 《致命的温柔》24K德国HD金碟DTS 2CD[WAV+分轨][1.7G]
- 张学友1997《不老的传说》宝丽金首版 [WAV+CUE][971M]
- 张韶涵2024 《不负韶华》开盘母带[低速原抓WAV+CUE][1.1G]
- lol全球总决赛lcs三号种子是谁 S14全球总决赛lcs三号种子队伍介绍
- lol全球总决赛lck三号种子是谁 S14全球总决赛lck三号种子队伍
- 群星.2005-三里屯音乐之男孩女孩的情人节【太合麦田】【WAV+CUE】
- 崔健.2005-给你一点颜色【东西音乐】【WAV+CUE】
- 南台湾小姑娘.1998-心爱,等一下【大旗】【WAV+CUE】
- 【新世纪】群星-美丽人生(CestLaVie)(6CD)[WAV+CUE]
- ProteanQuartet-Tempusomniavincit(2024)[24-WAV]
- SirEdwardElgarconductsElgar[FLAC+CUE]
- 田震《20世纪中华歌坛名人百集珍藏版》[WAV+CUE][1G]
- BEYOND《大地》24K金蝶限量编号[低速原抓WAV+CUE][986M]
- 陈奕迅《准备中 SACD》[日本限量版] [WAV+CUE][1.2G]