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

引用来自“幻视Vision”的评论

你学正则表达式。用正则处理逻辑会简单很多。开启re.DOTALL参数,让 . 可以匹配换行。

建议结果输出为CSV文件。基本上不需要额外学习。

python第三方模块很多,有学习门槛。

谢谢各位热心朋友的指点,有了大概方向了,在朋友们的帮助下,初步有了一个模子,发上来,让各位大神指点指正一下。

#!/usr/bin/env/python3

# _*_ coding: utf-8 _*_

'''

运行环境:

Python 3.4+

需要第三方库 openpyxl

'''

from openpyxl import Workbook

import os, re

def getTxtFiles(path, suffix):

rslt = []

for dirpath, dirname, filenames in os.walk(path):

for filename in filenames:

if filename.lower().endswith("." + suffix.lower()):

rslt.append(os.path.join(dirpath, filename))

return rslt

def fileProc(filename):

row1st_pattern = re.compile(r'第\s+(\d+)\s+层配筋、验算')

valid_row_pattern = re.compile(r'[a-zA-Z]+\=\s+(?:\-)?\d+(?:\.\d+)?')

split_ptr = re.compile(r'\=\s+')

nc_ptr = re.compile(r'[a-zA-Z]+\-[a-zA-Z]+\=\s+\d+')

titles = []

lines = []

try:

with open(filename) as ifs:

line_cont = {}

cont = ifs.read().decode('gb18030').encode('utf-8') #gbk

print('正在开始分析下个标准层')

for line in cont.strip().split('\n'): #修改trim为strip

if line:

c0 = row1st_pattern.findall(line)

c1 = nc_ptr.findall(line)

if c0:

line_cont["标准层"] = c0

0.gif

titles.append("标准层")

if c1:

key_vals = split_ptr.split(c1

0.gif)

line_cont[key_vals

0.gif] = key_vals

1.gif

titles.append(key_vals

0.gif)

if line.startswith('( '):

for ptrs in valid_row_pattern.findall(line):

k_vs = split_ptr.split(split_ptr)

line_cont[k_vs

0.gif] = k_vs

1.gif

titles.append(k_vs

0.gif)

if line.startswith('-'*10):

lines.append(line_cont)

except Exception as e:

print(e, )

finally:

return titles, lines

def writeExcel(titles, lines, path):

wb = Workbook()

ws1 = wb.active

ws1.title = "Anything"

ws1.append(titles)

for line in lines:

line_cont = []

for title in titles:

line_cont.append(line.get(title))

ws1.append(line_cont)

wb.save("test.xlsx")

# wb.save(filename = path)

# print("生成文件:%s\n" % path)

def proc(path, suffix):

for filename in getTxtFiles(path, suffix):

titles, lines = fileProc(filename)

filepath = filename[:filename.rfind('.')]

outfilename = filepath + ".xlsx"

writeExcel(titles, lines, outfilename)

if __name__ == '__main__':

# 输入文件目录的完整路径

# path = '/Users/helio/Downloads'

path = 'e:/text'

# 需要的文件后缀名,不区分大小写

suffix = "OUT"

proc(path, suffix)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值