最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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中format函數如何使用

    python中format函數如何使用

    在本篇內容里小編給大家整理的是一篇關于python的format函數用法以及相關實例,需要的朋友們學習下。
    2020-06-06
  • python錄音并調用百度語音識別接口的示例

    python錄音并調用百度語音識別接口的示例

    這篇文章主要介紹了python錄音并調用百度語音識別接口的示例,幫助大家更好的理解和利用python處理音頻,感興趣的朋友可以了解下
    2020-12-12
  • 利用Django框架中select_related和prefetch_related函數對數據庫查詢優(yōu)化

    利用Django框架中select_related和prefetch_related函數對數據庫查詢優(yōu)化

    這篇文章主要介紹了利用Python的Django框架中select_related和prefetch_related函數對數據庫查詢的優(yōu)化的一個實踐例子,展示如何在實際中利用這兩個函數減少對數據庫的查詢次數,需要的朋友可以參考下
    2015-04-04
  • python代數式括號有效性檢驗示例代碼

    python代數式括號有效性檢驗示例代碼

    這篇文章主要給大家介紹了關于python代數式括號有效性檢驗的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-10-10
  • YOLOv5車牌識別實戰(zhàn)教程(二)理論基礎

    YOLOv5車牌識別實戰(zhàn)教程(二)理論基礎

    這篇文章主要介紹了YOLOv5車牌識別實戰(zhàn)教程(二)理論基礎,在這個教程中,我們將一步步教你如何使用YOLOv5進行車牌識別,幫助你快速掌握YOLOv5車牌識別技能,需要的朋友可以參考下
    2023-04-04
  • python copy模塊中的函數實例用法

    python copy模塊中的函數實例用法

    在本篇內容里小編給大家整理了關于python copy模塊的基礎知識點及實例用法,有需要的朋友們可以跟著學習下。
    2021-09-09
  • Python中如何替換字典中的值

    Python中如何替換字典中的值

    這篇文章主要介紹了Python中替換字典中的值,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-03-03
  • Python中關于?*args與**args的用法及說明

    Python中關于?*args與**args的用法及說明

    這篇文章主要介紹了Python中關于?*args與**args的用法及說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • Python和Anaconda和Pycharm安裝教程圖文詳解

    Python和Anaconda和Pycharm安裝教程圖文詳解

    PyCharm是一種PythonIDE,帶有一整套可以幫助用戶在使用Python語言開發(fā)時提高其效率的工具,這篇文章主要介紹了Python和Anaconda和Pycharm安裝教程,需要的朋友可以參考下
    2020-02-02
  • Python中的Decimal使用及說明

    Python中的Decimal使用及說明

    這篇文章主要介紹了Python中的Decimal使用及說明,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-10-10

最新評論

丰顺县| 南江县| 南开区| 云霄县| 宽城| 龙南县| 马尔康县| 高邑县| 兰州市| 南投市| 张北县| 金坛市| 临西县| 昭苏县| 平昌县| 原阳县| 保靖县| 松江区| 靖远县| 察雅县| 广宁县| 翁牛特旗| 红桥区| 电白县| 松江区| 兴义市| 竹溪县| 乐清市| 贵港市| 綦江县| 靖宇县| 和政县| 玉山县| 承德市| 中江县| 平罗县| 团风县| 寻甸| 贺州市| 客服| 平顶山市|