欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python實現修改固定模式的字符串內容操作示例

 更新時間:2019年12月30日 10:44:24   作者:團長sama  
這篇文章主要介紹了python實現修改固定模式的字符串內容操作,結合實例形式詳細分析了Python修改固定模式字符串原理、實現方法及相關操作注意事項,需要的朋友可以參考下

本文實例講述了python實現修改固定模式的字符串內容操作。分享給大家供大家參考,具體如下:

說明

字符串模式是開頭可能有空格,之后可能存在多個小數點,然后后面跟著一個數字,數字可能是小數,數字后可能存在空格。

任務要求刪去開頭的小數點,如下:

" …78 " 修改為" 78 "
" …7.889 " 修改為" 7.889 "
“.9.8"修改為"9.8”

代碼示例

注意這里正則的模式和分組的用法

import os
import re
testStr=r"...7.88 "
pattern=re.compile(r'(?P<lblank> *)(?P<point>\.*)(?P<realcontent>\d+\.?\S*)(?P<rblank> *)')
finalStr=pattern.search(testStr)
print(finalStr)
result=finalStr.group("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'(?P<lblank> *)(?P<point>\.*)(?P<realcontent>\d+\.?\S*)(?P<rblank> *)')
  finalStr=pattern.search(txtcontent)
  if len(finalStr.group("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()
    # 創(chuàng)建對應的文件夾
    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程序設計有所幫助。

相關文章

  • Python with的用法

    Python with的用法

    with 語句是從 Python 2.5 開始引入的一種與異常處理相關的功能。with 語句適用于對資源進行訪問的場合,確保不管使用過程中是否發(fā)生異常都會執(zhí)行必要的“清理”操作,釋放資源,比如文件使用后自動關閉、線程中鎖的自動獲取和釋放等。
    2014-08-08
  • python實現DES加密解密方法實例詳解

    python實現DES加密解密方法實例詳解

    這篇文章主要介紹了python實現DES加密解密方法,以實例形式較為詳細的分析了基于Python實現的DES加密與解密技巧,需要的朋友可以參考下
    2015-06-06
  • python批量修改文件名的實現代碼

    python批量修改文件名的實現代碼

    這篇文章主要介紹了python批量修改文件名的實現代碼,需要的朋友可以參考下
    2014-09-09
  • python采用requests庫模擬登錄和抓取數據的簡單示例

    python采用requests庫模擬登錄和抓取數據的簡單示例

    這篇文章主要介紹了python采用requests庫模擬登錄和抓取數據的簡單示例,代碼簡單卻功能強大!需要的朋友可以參考下
    2014-07-07
  • 使用PyCharm調試程序實現過程

    使用PyCharm調試程序實現過程

    這篇文章主要介紹了使用PyCharm調試程序實現過程,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • Python 如何強制限定小數點位數

    Python 如何強制限定小數點位數

    這篇文章主要介紹了Python 強制限定小數點位數的操作方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • python實現的二叉樹算法和kmp算法實例

    python實現的二叉樹算法和kmp算法實例

    最近重溫數據結構,又用python,所以就用python重新寫了數據結構的一些東西,以下是二叉樹的python寫法
    2014-04-04
  • Python抓新型冠狀病毒肺炎疫情數據并繪制全國疫情分布的代碼實例

    Python抓新型冠狀病毒肺炎疫情數據并繪制全國疫情分布的代碼實例

    在本篇文章里小編給大家整理了一篇關于Python抓新型冠狀病毒肺炎疫情數據并繪制全國疫情分布的代碼實例,有興趣的朋友們可以學習下。
    2020-02-02
  • python使用分治法實現求解最大值的方法

    python使用分治法實現求解最大值的方法

    這篇文章主要介紹了python使用分治法實現求解最大值的方法,較為詳細的分析了分治法的原理與實現求最大值的方法,需要的朋友可以參考下
    2015-05-05
  • Python編程argparse入門淺析

    Python編程argparse入門淺析

    這篇文章主要介紹了Python編程argparse入門淺析,分享了相關代碼,小編覺得還是挺不錯的,具有一定借鑒價值,需要的朋友可以參考下
    2018-02-02

最新評論