提取某文件夹下多个TXT文件里面的一些内容,然后统一整理写到EXCEL表格内。

来源:互联网  时间:2016/5/31 2:47:46

关于网友提出的“提取某文件夹下多个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后如:

excel制作财务报表,excel财务软件,excel表格操作培训,excel表格下载,excel,excel2007,excel表格模板,excel表格制作,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写入

上一篇提取微博正文的正则表达式该怎么写?
下一篇请问怎么使用python把字符串按照某种形状显示
明星图片
相关文章
《提取某文件夹下多个TXT文件里面的一些内容,然后统一整理写到EXCEL表格内。》由码蚁之家搜集整理于网络,
联系邮箱:mxgf168#qq.com(#改为@)