关于网友提出的“提取某文件夹下多个TXT文件里面的一些内容,然后统一整理写到EXCEL表格内。”问题疑问,本网通过在网上对“提取某文件夹下多个TXT文件里面的一些内容,然后统一整理写到EXCEL表格内。”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:
问题:提取某文件夹下多个TXT文件里面的一些内容,然后统一整理写到EXCEL表格内。描述:
工程设计软件PKPM输出计算结果是txt文件,每层的内力结果为一个文件,其中包括柱、梁、墙的结果。我想把其中柱的计算内力结果提取出来,整理写入EXCEL文件,以便后续计算。想用python来实现,请高手指点一下。
单个txt文件内容如:
----------------------------------------------------------
| 第 1 层配筋、验算 |
----------------------------------------------------------
==============================================================================
| 柱配筋和验算输出 |
==============================================================================
N-C= 1 ( 14)B*H*U*T*D*F(mm)= 271* 700* 271* 700* 8* 8
Cx= 1.78 Cy= 1.23 Lc= 4.200(m) Nfc= 1 Rcc= 50.0 Rsc= 345 Fy= 360. Fyv= 360.
RLIVEC= 0.60 方钢管混凝土柱
柱顶弯矩调整系数: 1.00 柱底弯矩调整系数: 1.00 柱剪力调整系数: 1.50
矩形钢管混凝土柱,按规程CECS 159:2004、JGJ 3-2010
( 31)Nu= -3155. Uc= 0.360
( 31)Mx= -787.My= -17.N= -3155. R_F1= 0.57
( 29)Mx= -162. My= 306.N= -2848. R_F2= 0.64
( 31)Mx= -787. My= -17. N= -3155. R_F3= 0.72
( 28)Sx= -178. R_F4= 0.19
( 31)Sy= 195. R_F5= 0.08
长细比: Rmdx= 27.51 Rmdy= 45.00
宽厚比, b/tf= 31.88 b/tf_max= 61.00
高厚比, h/tw= 85.50 h/tw_max= 61.00
抗剪承载力: CB_XF= 305.1 CB_YF= 770.3
** 方钢管管壁板件边长与其厚度比值超限
D/t= 87.50> 49.52
** 混凝土承担系数超限
ARFc= 0.46 > ARFcmax= 0.40
** 高厚比超限
h/tw= 85.50 > h/tw_max= 61.00
----------------------------------------------------------------------------
N-C= 2 ( 14)B*H*U*T*D*F(mm)= 271* 700* 271* 700* 8* 8
Cx= 1.78 Cy= 1.23 Lc= 4.200(m) Nfc= 1 Rcc= 50.0 Rsc= 345 Fy= 360. Fyv= 360.
RLIVEC= 0.60 方钢管混凝土柱
柱顶弯矩调整系数: 1.00 柱底弯矩调整系数: 1.00 柱剪力调整系数: 1.50
矩形钢管混凝土柱,按规程CECS 159:2004、JGJ 3-2010
( 31)Nu= -2954. Uc= 0.337
( 31)Mx= -725. My= -16. N= -2954. R_F1= 0.53
( 29)Mx= -65. My= 306. N= -2763. R_F2= 0.59
( 31)Mx= -725. My= -16. N= -2954. R_F3= 0.66
( 28)Sx= -178. R_F4= 0.19
( 31)Sy= 176. R_F5= 0.07
长细比: Rmdx= 27.51 Rmdy= 45.00
宽厚比, b/tf= 31.88 b/tf_max= 61.00
高厚比, h/tw= 85.50 h/tw_max= 61.00
抗剪承载力: CB_XF= 306.4 CB_YF= 773.9
** 方钢管管壁板件边长与其厚度比值超限
D/t= 87.50> 49.52
** 混凝土承担系数超限
ARFc= 0.46 > ARFcmax= 0.40
** 高厚比超限
h/tw= 85.50 > h/tw_max= 61.00
----------------------------------------------------------------------------
N-C= 3 ( 14)B*H*U*T*D*F(mm)= 271* 700* 271* 700* 8* 8
Cx= 1.78 Cy= 1.23 Lc= 4.200(m) Nfc= 1 Rcc= 50.0 Rsc= 345 Fy= 360. Fyv= 360.
RLIVEC= 0.60 方钢管混凝土柱
柱顶弯矩调整系数: 1.00 柱底弯矩调整系数: 1.00 柱剪力调整系数: 1.50
矩形钢管混凝土柱,按规程CECS 159:2004、JGJ 3-2010
( 31)Nu= -3035. Uc= 0.346
( 31)Mx= -773. My= 14. N= -3035. R_F1= 0.55
( 29)Mx= -105. My= 305. N= -2771. R_F2= 0.61
( 31)Mx= -773. My= 14. N= -3035. R_F3= 0.69
( 28)Sx= -178. R_F4= 0.19
( 31)Sy= 188. R_F5= 0.08
长细比: Rmdx= 27.51 Rmdy= 45.00
宽厚比, b/tf= 31.88 b/tf_max= 61.00
高厚比, h/tw= 85.50 h/tw_max= 61.00
抗剪承载力: CB_XF= 306.3 CB_YF= 773.4
** 方钢管管壁板件边长与其厚度比值超限
D/t= 87.50> 49.52
** 混凝土承担系数超限
ARFc= 0.46 > ARFcmax= 0.40
** 高厚比超限
h/tw= 85.50 > h/tw_max= 61.00
----------------------------------------------------------------------------
N-C= 4 ( 14)B*H*U*T*D*F(mm)= 271* 700* 271* 700* 8* 8
Cx= 1.40 Cy= 1.24 Lc= 4.200(m) Nfc= 1 Rcc= 50.0 Rsc= 345 Fy= 360. Fyv= 360.
RLIVEC= 0.60 方钢管混凝土柱
柱顶弯矩调整系数: 1.70 柱底弯矩调整系数: 1.70 柱剪力调整系数: 2.55
矩形钢管混凝土柱,按规程CECS 159:2004、JGJ 3-2010
( 31)Nu= -4976. Uc= 0.568
( 38)Mx= 886. My= -16. N= 2350. R_F1= 0.98
( 31)Mx= -884. My= 17. N= -4976. R_F2= 0.81
( 31)Mx= -884. My= 17. N= -4976. R_F3= 0.96
( 29)Sx= 174. R_F4= 0.19
( 30)Sy= -244. R_F5= 0.10
长细比: Rmdx= 21.67 Rmdy= 45.37
宽厚比, b/tf= 31.88 b/tf_max= 61.00
高厚比, h/tw= 85.50 h/tw_max= 61.00
抗剪承载力: CB_XF= 292.1 CB_YF= 736.3
** 方钢管管壁板件边长与其厚度比值超限
D/t= 87.50> 49.52
** 混凝土承担系数超限
ARFc= 0.46 > ARFcmax= 0.40
** 高厚比超限
h/tw= 85.50 > h/tw_max= 61.00
===================================================================
| 墙配筋和验算输出 |
==================================================================
N-WC= 1 (I= 985 J= 986) B*H*Lwc(m)= 0.27* 0.80* 4.20
aa= 40(mm) Nfw= 1 Rcw= 50.0 Fy= 360. Fyv= 210. Fyw= 300. Rwv= 0.15
双侧:Bsp= 8.0(mm) fsp= 310.
该墙柱在地震组合下有受拉的情况,若该墙柱是双肢墙的其中一肢,请在前处理定义双肢墙,以让程序做相应的内力调整。
RLIVE= 0.60 钢板混凝土墙 短肢墙 地下室外墙 加强区
Nu= -981. Uc= 0.109
( 29)M= 270. V= 142. Rmdw= 2.506
( 1)M= -13. N= -1121. As= 0.
( 1)V= 1. N= -1121. Ash= 101.2 Rsh= 0.25
Asv 为在侧向 水土 压力下, 外墙每延米双侧竖向分布筋面积(可配成双排)
竖向力PN= -1286. 面外水平压力PL= 21. 最大弯矩Mv= 38. Asv= 1620.0(mm2/M)
抗剪承载力: WS_XF = 0.0 WS_YF = 1138.6
剪压比(组合号):JYB( 29)=0.048
----------------------------------------------------------------------------
N-WC= 2 (I= 986 J= 989) B*H*Lwc(m)= 0.27* 0.80* 4.20
aa= 40(mm) Nfw= 1 Rcw= 50.0 Fy= 360. Fyv= 210. Fyw= 300. Rwv= 0.15
双侧:Bsp= 8.0(mm) fsp= 310.
该墙柱在地震组合下有受拉的情况,若该墙柱是双肢墙的其中一肢,请在前处理定义双肢墙,以让程序做相应的内力调整。
RLIVE= 0.60 钢板混凝土墙 短肢墙 地下室外墙 加强区
Nu= -969. Uc= 0.108
( 28)M= 521. V= 220. Rmdw= 3.113
( 1)M= 12. N= -1108. As= 0.
( 1)V= 0. N= -1108. Ash= 101.2 Rsh= 0.25
Asv 为在侧向 水土 压力下, 外墙每延米双侧竖向分布筋面积(可配成双排)
竖向力PN= -1270. 面外水平压力PL= 21. 最大弯矩Mv= 38. Asv= 1620.0(mm2/M)
抗剪承载力: WS_XF = 1138.2 WS_YF = 0.0
剪压比(组合号):JYB( 28)=0.074
----------------------------------------------------------------------------
N-WC= 3 (I= 998 J= 1004) B*H*Lwc(m)= 0.27* 0.80* 4.20
aa= 40(mm) Nfw= 1 Rcw= 50.0 Fy= 360. Fyv= 210. Fyw= 300. Rwv= 0.15
双侧:Bsp= 8.0(mm) fsp= 310.
该墙柱在地震组合下有受拉的情况,若该墙柱是双肢墙的其中一肢,请在前处理定义双肢墙,以让程序做相应的内力调整。
RLIVE= 0.60 钢板混凝土墙 短肢墙 地下室外墙 加强区
Nu= -1486. Uc= 0.166
( 29)M= 544. V= 223. Rmdw= 3.211
( 1)M= -4. N= -1704. As= 0.
( 1)V= 8. N= -1704. Ash= 101.2 Rsh= 0.25
Asv 为在侧向 水土 压力下, 外墙每延米双侧竖向分布筋面积(可配成双排)
竖向力PN= -1964. 面外水平压力PL= 21. 最大弯矩Mv= 38. Asv= 1620.0(mm2/M)
抗剪承载力: WS_XF = 1155.9 WS_YF = 0.0
剪压比(组合号):JYB( 29)=0.075
----------------------------------------------------------------------------
上面颜色标识的数据就是我想提取的内容,导入excel后如:
谢谢。
解决方案1:
引用来自“幻视Vision”的评论
你学正则表达式。用正则处理逻辑会简单很多。开启re.DOTALL参数,让 . 可以匹配换行。
建议结果输出为CSV文件。基本上不需要额外学习。
python第三方模块很多,有学习门槛。
解决方案2:""" python提取PKPM软件数据写入到EXCEL文件.py http://www.oschina.net/question/2661202_2154877 2016年3月5日 00:34:38 codegay 原文数据很多没说清楚,省点精力就写个大概。 """ import re import openpyxl with open("a.txt",encoding="utf-8") as f: txt=f.read() #表头 head=["标准层","N-C","工况","Nu","Uc","N-C","MX","MY","N"] wb=openpyxl.Workbook() ws=wb.active ws.append(head) rec=re.findall("""N-C=.*?(\d+) .*?Nu=\s*([-+]?\d+)\. Uc= ([-+]?\d+[\.\d]*).*?抗剪承载力""",txt,re.DOTALL) print(rec) for r in range(0,3): ws['B'+str(2+r)]=rec[r][0]#N-C ws['D'+str(2+r)]=rec[r][1]#Nu ws['E'+str(2+r)]=rec[r][2]#Uc wb.save("test.xlsx")解决方案3:
https://openpyxl.readthedocs.org/en/2.3.3/
谢谢楼上。openpyxl挺简单的,没有门槛。
from openpyxl import Workbook wb = Workbook() # grab the active worksheet ws = wb.active # Data can be assigned directly to cells ws['A1'] = 42 # Rows can also be appended ws.append([1, 2, 3]) # Python types will automatically be converted import datetime ws['A2'] = datetime.datetime.now() # Save the file wb.save("sample.xlsx")解决方案4:
你学正则表达式。用正则处理逻辑会简单很多。开启re.DOTALL参数,让 . 可以匹配换行。
建议结果输出为CSV文件。基本上不需要额外学习。
python第三方模块很多,有学习门槛。
解决方案5:我用c#读写excel有NPOI开源的库,你python读写excel肯定有更多资源,好好找找
解决方案6:正则提取,openpyxl写入