# encoding=utf-8import easygui as gg
import osdefopenTxt():if(not(os.path.exists(r"C:\Users\Public\Documents\TXT"))):os.mkdir(r"C:\Users\Public\Documents\TXT")txtpath = gg.fileopenbox()print(txtpath)return txtpathdefclearBlankLine(txtpath):file1 =open(txtpath,'r', encoding='utf-8')# 要去掉空行的文件file2 =open(r'C:\Users\Public\Documents\能譜報告所需的表格數(shù)據(jù)集.txt','w', encoding='utf-8')# 生成沒有空行的文件try:for line in file1.readlines():if line =='\n':line = line.strip("\n")file2.write(line)finally:file1.close()file2.close()defseprateTxt():a =[0]withopen(r'C:\Users\Public\Documents\能譜報告所需的表格數(shù)據(jù)集.txt', mode="r", encoding="utf-8")as f2:end = f2.readlines()# print(len(end))for n in end:###########################if"Total"in n:a.append(end.index(n)+1)# 獲取個數(shù),即可知道列表共有幾行print(len(a))print(a)print(len(end))s = end # 按索引值將列表進(jìn)行拆分indices = a # 按索引值將列表進(jìn)行拆分parts =[s[i:j]for i, j inzip(indices, indices[1:]+[None])]# 按索引值將列表進(jìn)行拆分print(parts)i =0while i <len(a):for b in parts[i]:print(b)for txt in b:withopen(r'C:\Users\Public\Documents\TXT\txt%03d.txt'%(i +1), mode="a", encoding="utf-8")as f3:f3.write("%s"% txt)f3.close()i +=1if __name__ =='__main__':clearBlankLine(openTxt())seprateTxt()os.remove(r'C:\Users\Public\Documents\能譜報告所需的表格數(shù)據(jù)集.txt')
如何從文本文件里獲取信息形成表格數(shù)據(jù)集? 代碼實現(xiàn)如下
defTableData(txtpath):a, b, c, d, e =[],[],[],[],[]withopen(txtpath, mode="r", encoding="utf-8")asfile:endd =file.readlines()for i in endd:if"K-series"in i:a.append(endd[endd.index(i)])defremove(m):for j in a[m].split(" "):b.append(j)n = b.count('')for k inrange(0, n):b.remove('')m =0while m <len(a):remove(m)m +=1if b[0]=="O":b.insert(6,"/")b[6]="/"else:passfor k in b:d.append(k.replace("\n",""))if"F"in k and"Fe"notin k and"FeO"notin k:print(b.index(k))b.insert((b.index(k))+6,"/")########################每10個數(shù)將列表拆分成一個子列表##########################################n =10f =[d[i:i + n]for i inrange(0,len(d), n)]return f
運(yùn)行效果如下:
C:\Users\0\AppData\Local\Programs\Python\Python38\python.exe E:/Users/0/Desktop/PYTHON/nengpu/從文本獲取關(guān)鍵信息2.py
['O','8','K-series','37.73','46.77','61.61','/','0.00','0.00','4.62\n','Si','14','K-series','20.57','25.49','19.13','SiO2','54.54','44.00','0.89\n','Al','13','K-series','12.70','15.74','12.30','Al2O3','29.74','24.00','0.62\n','K','19','K-series','6.41','7.95','4.28','K2O','9.58','7.73','0.23\n','Mg','12','K-series','1.72','2.13','1.85','MgO','3.53','2.85','0.12\n','Fe','26','K-series','1.14','1.41','0.53','FeO','1.81','1.46','0.09\n','Ti','22','K-series','0.29','0.36','0.16','TiO2','0.59','0.48','0.04\n','Na','11','K-series','0.12','0.15','0.14','Na2O','0.21','0.17','0.04\n'][['O','8','K-series','37.73','46.77','61.61','/','0.00','0.00','4.62'],['Si','14','K-series','20.57','25.49','19.13','SiO2','54.54','44.00','0.89'],['Al','13','K-series','12.70','15.74','12.30','Al2O3','29.74','24.00','0.62'],['K','19','K-series','6.41','7.95','4.28','K2O','9.58','7.73','0.23'],['Mg','12','K-series','1.72','2.13','1.85','MgO','3.53','2.85','0.12'],['Fe','26','K-series','1.14','1.41','0.53','FeO','1.81','1.46','0.09'],['Ti','22','K-series','0.29','0.36','0.16','TiO2','0.59','0.48','0.04'],['Na','11','K-series','0.12','0.15','0.14','Na2O','0.21','0.17','0.04']]880.68Process finished with exit code 0