国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

python使用正則搜索字符串或文件中的浮點數(shù)代碼實例

2020-02-23 05:32:34
字體:
供稿:網(wǎng)友

用python和numpy處理數(shù)據(jù)次數(shù)比較多,寫了幾個小函數(shù),可以方便地讀寫數(shù)據(jù):

# -*- coding: utf-8 -*-#----------------------------------------------------------------------# FileName:gettxtdata.py#功能:讀取字符串和文件中的數(shù)值數(shù)據(jù)(浮點數(shù))#主要提供類似matlab中的dlmread和dlmwrite函數(shù)#同時提供loadtxtdata和savetxtdata函數(shù)#Data: 2013-1-10#Author:吳徐平#----------------------------------------------------------------------import numpy#----------------------------------------------------------------------def StringToDoubleArray(String):  """  #將字符串中的所有非Double類型的字符全部替換成空格  #以'#'開頭注釋直至行尾,都被清空  #返回一維numpy.array數(shù)組  """   from StringIO import StringIO  import re    DataArray=numpy.empty([0],numpy.float64)  if len(String.strip())>0:    #清空注釋行,都是以'#'開頭子字符    doublestring=re.sub('#.*$', " ", String, count=0, flags=re.IGNORECASE)    #刪除非數(shù)字字符          doublestring=re.sub('[^0-9.e+-]', " ", doublestring, count=0, flags=re.IGNORECASE)    #去掉不正確的數(shù)字格式(代碼重復(fù)是有必要的)    doublestring=re.sub('[.e+-](?=/s)', " ", doublestring, count=0, flags=re.IGNORECASE)    doublestring=re.sub('[.e+-](?=/s)', " ", doublestring, count=0, flags=re.IGNORECASE)    doublestring=re.sub('[e+-]$', " ", doublestring, count=0, flags=re.IGNORECASE)    doublestring=re.sub('[e+-]$', " ", doublestring, count=0, flags=re.IGNORECASE)    #去掉首尾空格    doublestring=doublestring.strip()    if len(doublestring)>0:      StrIOds=StringIO(doublestring)      DataArray= numpy.genfromtxt(StrIOds)    return DataArray#----------------------------------------------------------------------def GetDoubleListFromString(String):  """  #使用換行符分割字符串  #將字符串中的所有非Double類型的字符全部替換成空格  #以'#'開頭注釋直至行尾,都被清空  #將每一行轉(zhuǎn)換成numpy.array數(shù)組  #返回numpy.array數(shù)組的列表  """   from StringIO import StringIO  import re   DoubleList=[]  StringList=String.split('/n')#使用換行符分割字符串  for Line in StringList:    if len(Line.strip())>0:      #清空注釋行,都是以'#'開頭子字符      doublestring=re.sub('#.*$', " ", Line, count=0, flags=re.IGNORECASE)      #刪除非數(shù)字字符            doublestring=re.sub('[^0-9.e+-]', " ", doublestring, count=0, flags=re.IGNORECASE)      #去掉不正確的數(shù)字格式(代碼重復(fù)是有必要的)      doublestring=re.sub('[.e+-](?=/s)', " ", doublestring, count=0, flags=re.IGNORECASE)      doublestring=re.sub('[.e+-](?=/s)', " ", doublestring, count=0, flags=re.IGNORECASE)      doublestring=re.sub('[e+-]$', " ", doublestring, count=0, flags=re.IGNORECASE)      doublestring=re.sub('[e+-]$', " ", doublestring, count=0, flags=re.IGNORECASE)      #去掉首尾空格      doublestring=doublestring.strip()      if len(doublestring)>0:        StrIOds=StringIO(doublestring)        DoubleList.append(numpy.genfromtxt(StrIOds))     return DoubleList  #----------------------------------------------------------------------def GetDoubleListFromFile(FileName):  """  #將文本文件中的所有Double類型的字符全部替換成numpy.array數(shù)組  #每一行都是numpy.array數(shù)組  ##返回numpy.array數(shù)組的列表  #注意:返回列表的每個元素又都是一個numpy.array數(shù)組  #注意:返回列表的每個元素(或文件每行)可以包含不同多個數(shù)的數(shù)字  """   file=open(FileName, 'r')  read_file = file.read()  file.close()   DoubleList=GetDoubleListFromString(read_file)  return DoubleListdef dlmread(FileName,dtype=numpy.float64):  """  #Load Data From Txt-File.  #分隔符默認是:";",",",空格類 (包括/t)等等  #以#開頭的被認為是注釋,不會被讀取  #Return Value:二維數(shù)值數(shù)組(numpy.ndarray)  #對文本中數(shù)據(jù)的排列格式要求最低,且容許出現(xiàn)注釋字符,智能化程度最高,但速度較慢  """  DoubleList=GetDoubleListFromFile(FileName)  dlsize=[]#每一行數(shù)組的大小  for dL in DoubleList:    dlsize.append(dL.size)      MinColumnSize=min(dlsize)#數(shù)組的最大列數(shù)  MaxColumnSize=max(dlsize)#數(shù)組的最小列數(shù)  #數(shù)組創(chuàng)建和賦值  DoubleArray=numpy.empty([len(DoubleList),MinColumnSize],dtype=dtype)    row=range(0,len(DoubleList))  colum=range(0,MinColumnSize)    for i in row:    for j in colum:      DoubleArray[i][j]=DoubleList[i][j]       return DoubleArray#----------------------------------------------------------------------def loadtxtdata(filename,delimiter=""):  """  #Load Data From Txt-File with delimiter.  #分隔符默認是:";",",",空格類 (包括/t)和自定義的delimiter等  #Return Value:  二維數(shù)值數(shù)組(numpy.ndarray)  #對文本中數(shù)據(jù)的排列格式要求較高,且不容許出現(xiàn)注釋字符,智能化程度較低,但速度較快  """  from StringIO import StringIO  import re    file_handle=open(filename,'r')  LinesALL=file_handle.read()#讀入字符串  file_handle.close()    DelimiterALL=delimiter+",;"#分隔符  SpaceString=" "#空格  for RChar in DelimiterALL:    LinesALL=LinesALL.replace(RChar,SpaceString)      return numpy.genfromtxt(StringIO(LinesALL))  #----------------------------------------------------------------------  def savetxtdata(filename, X, fmt='%.8e', delimiter=' ', newline='/n'):  """  Save Data To Txt-File.  """  numpy.savetxt(filename, X, fmt=fmt, delimiter=delimiter, newline=newline)     return True  #----------------------------------------------------------------------def dlmwrite(filename, X, fmt='%.8e', delimiter=' ', newline='/n'):  """  Save Data To Txt-File.  """  numpy.savetxt(filename, X, fmt=fmt, delimiter=delimiter, newline=newline)     return True  #----------------------------------------------------------------------#測試程序 #----------------------------------------------------------------------if __name__ == '__main__':  #生成隨機數(shù)  data=numpy.random.randn(3,4)  filename='D:/x.txt'  #寫入文件  dlmwrite(filename,data)  x=GetDoubleListFromFile(filename)  print(x)  print(dlmread(filename))  y=StringToDoubleArray('79l890joj')  print(y)  z=loadtxtdata(filename)  print(z)            
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 临西县| 镇沅| 金山区| 东乡| 河东区| 依安县| 青河县| 桓仁| 威远县| 卢氏县| 宁国市| 若羌县| 虎林市| 舞阳县| 太康县| 嘉峪关市| 灵丘县| 容城县| 三门县| 松江区| 冀州市| 新龙县| 原平市| 石阡县| 张家口市| 乌拉特中旗| 武安市| 高邮市| 胶南市| 会理县| 易门县| 腾冲县| 仲巴县| 晋宁县| 英超| 克什克腾旗| 台南市| 松原市| 曲水县| 嵊州市| 绥江县|