【Python】数据治理工具池(1)

目录

1.切割text文档,提取指定数据(要求数据的格式统一)

2.将docx文档的段落内容写入txt文档

3.读取docx文档中的表格,遍历每一个单元格

4.将doc文档转化为txt文档

5.将doc文档中的内容提取指定的数据存进Excel(综合以上代码)

6.将指定目录中word文档(包含docx,doc格式)中的内容提取指定的数据存进Excel(综合以上代码)

7.将文件夹中文件内容依次输出

8.将某个文件夹下所有的非文件夹文件的名字中的括号及其括号中的内容删除

9.获取文件的所在目录的路径的超链接公式(即上一级路径)

10.将excel数据中含有括号及其括号中的内容删除

11.按照excel中的第一列换成第二列来实现更改文件名字,并且每次更改前先确认

12.批处理文件名:删掉文件名中的括号及括号中的内容(综合以上8-11的代码)

13.打印文件夹下所有文件名


1.切割text文档,提取指定数据(要求数据的格式统一)

import re
import sys
import xlwt

workbook = xlwt.Workbook(encoding = 'utf-8')
worksheet = workbook.add_sheet('My Worksheet',cell_overwrite_ok=True)
content = [] #用来存放解决情况
result=[]#result用来存放需求/问题描述
txt = ''

with open('C:/Users/xxx/Desktop/项目月报文档.txt','r',) as f:
    for line in f:
        tmp=str(line)
        txt+=tmp
        
start = txt.split('启动时间')[1].split('预期完成时间')[0].strip()
finish = txt.split('预期完成时间')[1].split('实际进度')[0].strip()

text = txt.split('近期需开展工作的落实反馈')[1].split('下阶段需开展的工作及计划')[0].strip().replace(":",":")
list = re.split('\d+、',text)
for i in range(1,len(list)):
    if '方面' in str(list[i]):
        result.append(re.split('方面',str(list[i]))[0]+"需求方面")
        content.append(list[i].split(':')[1])
for i in range(1,len(result)):
    print(result[i])
    
try:
    for i in range(0,len(result)):
        worksheet.write(i,2,start)
        worksheet.write(i,3,finish)
        worksheet.write(i,4,content[i])
        worksheet.write(i,0,result[i])
        worksheet.write(i,1,"数据治理系统")
        b = "共享" in content[i] or "接口" in content[i] or "服务" in content[i]
        if b:
            worksheet.write(i,1,"数据共享服务系统;数据治理系统")
finally:
    workbook.save('yuan.xls')

2.将docx文档的段落内容写入txt文档

from docx import Document

with open('C:/Users/xxx/Desktop/7月.txt', 'w') as fw:
    # 遍历 word 段落内容列表
    for context in document.paragraphs:
        text = context.text.split('\n')# 以换行符转换成列表
        fw.write(f"{text[0]}\n")# 按行写入,同时换行

fw.close()

3.读取docx文档中的表格,遍历每一个单元格

from docx import Document

f = open('C:/Users/xxx/Desktop/项目月报文档.docx', 'rb')# 打开 word文件
document = Document(f)# 读取 word文件内容

for table in document.tables:
    for row in table.rows:
        for cell in row.cells:
            print(cell.text)
            
f.close()

4.将doc文档转化为txt文档

# 参考链接:https://blog.csdn.net/qq_42896431/article/details/122608110
from win32com import client as wc
 
wordhandle = wc.Dispatch("Word.Application")
wordhandle.Visible = 0 # 后台运行,不显示
wordhandle.DisplayAlerts = 0  #不警告
doc = wordhandle.Documents.Open("C:/Users/xxx/Desktop/项目月报文档.doc")
doc.SaveAs('C:/Users/xxx/Desktop/项目月报文档.txt', 4) #  txt=4, html=10, docx=16, pdf=17
doc.Close()

5.将doc文档中的内容提取指定的数据存进Excel(综合以上代码)

思路:先将doc文档转化成txt文档,然后再处理txt文档,切成一块一块存进list,再把list存进Excel,最后保存Excel文件。

import re
import sys
import xlwt
from win32com import client as wc

# #初始化一些变量
workbook = xlwt.Workbook(encoding = 'utf-8')
worksheet = workbook.add_sheet('My Worksheet',cell_overwrite_ok=True)
nums = 0

for num in range(1,6):
    
    file = "2021年"+str(num)+"月"
    content = [] #用来存放解决情况
    result=[]#result用来存放需求/问题描述
    txt = ''
    print(file)

    #doc转成txt
    wordhandle = wc.Dispatch("Word.Application")
    wordhandle.Visible = 0 # 后台运行,不显示
    wordhandle.DisplayAlerts = 0  #不警告
    doc = wordhandle.Documents.Open("C:/Users/xxx/Desktop/项目月报文档-"+file+".doc")
    doc.SaveAs('C:/Users/xxx/Desktop/项目月报文档(1)/应急管理大数据项目月报-'+file+'.txt', 4) #  txt=4, html=10, docx=16, pdf=17
    doc.Close()

    with open('C:/Users/xxx/Desktop/项目月报文档-'+file+'.txt','r') as f:
        for line in f:
            tmp=str(line)
            txt+=tmp

    start = txt.split('启动时间')[1].split('预期完成时间')[0].strip()
    finish = txt.split('预期完成时间')[1].split('实际进度')[0].strip()

    text = txt.split('近期需开展工作的落实反馈')[1].split('下阶段需开展的工作及计划')[0].strip().replace(":",":")
    list = re.split('\d+、',text)
    for i in range(1,len(list)):
        if '方面' in str(list[i]):
            result.append(re.split('方面',str(list[i]))[0]+"需求方面")
            content.append(list[i].split(':')[1])
            
#     for i in range(1,len(result)):
#         print(result[i])
    
    for i in range(0,len(result)):
        print("本次写入从第"+str(i+nums)+"开始")
        worksheet.write(i+nums,2,start)
        worksheet.write(i+nums,3,finish)
        worksheet.write(i+nums,4,content[i])
        worksheet.write(i+nums,0,result[i])
        worksheet.write(i+nums,1,"数据治理系统")
        b = "共享" in content[i] or "接口" in content[i] or "服务" in content[i]
        if b:
            worksheet.write(i+nums,1,"数据共享服务系统;数据治理系统")  
            
    nums += len(result)

workbook.save('yuan.xls')
        

6.将指定目录中word文档(包含docx,doc格式)中的内容提取指定的数据存进Excel(综合以上代码)

import re
import os
import sys
import xlwt
from win32com import client as wc

# #初始化一些变量
workbook = xlwt.Workbook(encoding = 'utf-8')
worksheet = workbook.add_sheet('My Worksheet',cell_overwrite_ok=True)
nums = 0

#把文件夹中的文件全部打印出来
path = "C:/Users/xxx/Desktop/项目月报文档(1)"
datanames = os.listdir(path)
for i in datanames:
    print(i)
    content = [] #用来存放解决情况
    result=[]#result用来存放需求/问题描述
    txt = ''

    #doc转成txt
    wordhandle = wc.Dispatch("Word.Application")
    wordhandle.Visible = 0 # 后台运行,不显示
    wordhandle.DisplayAlerts = 0  #不警告
    doc = wordhandle.Documents.Open("C:/Users/xxx/Desktop/项目月报文档(1)/" + i )
    doc.SaveAs('C:/Users/xxx/Desktop/项目月报.txt', 4) #  txt=4, html=10, docx=16, pdf=17
    doc.Close()

    with open('C:/Users/xxx/Desktop/项目月报.txt','r') as f:
        for line in f:
            tmp=str(line)
            txt+=tmp

    start = txt.split('启动时间')[1].split('预期完成时间')[0].strip()
    finish = txt.split('预期完成时间')[1].split('实际进度')[0].strip()

    text = txt.split('近期需开展工作的落实反馈')[1].split('下阶段需开展的工作及计划')[0].strip().replace(":",":")
    list = re.split('\d+、',text)
    for i in range(1,len(list)):
        if '方面' in str(list[i]):
            result.append(re.split('方面',str(list[i]))[0]+"需求方面")
            content.append(list[i].split(':')[1])
            
#     for i in range(1,len(result)):
#         print(result[i])
    
    for i in range(0,len(result)):
        print("本次写入从第"+str(i+nums)+"开始")
        worksheet.write(i+nums,2,start)
        worksheet.write(i+nums,3,finish)
        worksheet.write(i+nums,4,content[i])
        worksheet.write(i+nums,0,result[i])
        worksheet.write(i+nums,1,"数据治理系统")
        b = "共享" in content[i] or "接口" in content[i] or "服务" in content[i]
        if b:
            worksheet.write(i+nums,1,"数据共享服务系统;数据治理系统")  
            
    nums += len(result)

workbook.save('yuan.xls')
        

7.将文件夹中文件内容依次输出

import re
import os
import sys
import xlwt
from win32com import client as wc

path = "C:/Users/xxx/Desktop/库整理/库整理_20220616/部门预案"
datanames = os.listdir(path)
repath = path.split("/")[-1]
repath_part1 = '=HYPERLINK("./部门预案\\01_市级部门预案\\13-深圳市水务局\\' + repath + "\\"
num = 1
for i in datanames:
    txt = ''
    #将文件转成txt
    wordhandle = wc.Dispatch("Word.Application")
    wordhandle.Visible = 0 # 后台运行,不显示
    wordhandle.DisplayAlerts = 0  #不警告
    doc = wordhandle.Documents.Open("C:/Users/xxx/Desktop/库整理/库整理_20220616/03_部门预案/01_市级部门预案/13-深圳市水务局/"+repath+"//" + i)
    doc.SaveAs('C:/Users/xxx/Desktop/text.txt', 4) #  txt=4, html=10, docx=16, pdf=17
    doc.Close()
    with open('C:/Users/xxx/Desktop/text.txt','r') as f:
        for line in f:
            tmp=str(line)
            txt+=tmp
            
#     print("`````````````````````````````"+str(num)+"`````````````````````````````")
    print(i)            
#     print(repath_part1 + i + "\",\"" + i + "\")")  #输出相对路径
#     print(i.split(".")[1])   #输出文件的格式
    print(txt.split('应急预案')[1].split('目  录')[0].strip())
    num  +=1

8.将某个文件夹下所有的非文件夹文件的名字中的括号及其括号中的内容删除

import os, sys
import re

path = "C:/Users/xxx/Desktop/库整理/库整理_20220616/03_部门预案"
datanames = os.listdir(path)
for i in datanames:
    if "." in i:
        old = path + "/" + i
        pattern = re.compile(r'\(.+?\)')
        newname = path + "/" + re.sub(pattern,'',i)
        os.rename(old,newname)
        print(newname)

9.获取文件的所在目录的路径的超链接公式(即上一级路径)

思路:按行遍历txt文本中的数据,数据内容是excel的超链接格式,每一行数据存放在result[]中,然后处理数据输出上一级路径的excel超链接公式。

import re
import sys
import os
import xlwt

result=[]#result用来存放关键字
with open('C:/Users/xxx/Desktop/text.txt','r',encoding = 'utf-8') as f:
    for line in f:
        result.append(list(line.strip('\n').split(',')))
        
for i in range(len(result)):
    docname= str(*result[i]).split('\\')[-1]
    path1 = str(*result[i]).replace(docname,"",1)
    print(path1+"\",\"所在目录路径\")")

10.将excel数据中含有括号及其括号中的内容删除

import xlrd
import sys
import re
import os, sys

def extract(inpath):
    
    data = xlrd.open_workbook(inpath, encoding_override='utf-8')
    table = data.sheets()[0]#选定表
    nrows = table.nrows#获取行号
    ncols = table.ncols#获取列号
    
    for i in range(0, nrows):#第0行为表头
        alldata = table.row_values(i)#循环输出excel表中每一行,即所有数据
        prename = alldata[0] + "," + alldata[1]#先保留原始的名字
        docname= str(alldata[0]).split('\\')[-1]#左边需要去掉括号的那一部分
        path1 = str(alldata[0]).replace(docname,"",1)#左边不需要处理的那一部分
        docname = re.sub(pattern,'',docname)#先单独处理左边需要删除括号的部分
        left = path1 + docname#然后将两部分合并起来
        right = re.sub(pattern,'',alldata[1])#取出表中第2列数据,并且删除括号吧
        rename= left+","+right
#         print(prename)
        print(rename)

        
inpath = 'yuan.xls'#excel文件所在路径
pattern = re.compile(r'\(.+?\)')
extract(inpath)

11.按照excel中的第一列换成第二列来实现更改文件名字,并且每次更改前先确认

from IPython.display import clear_output as clear
import os, sys
import re
import xlrd

dirpath="C:/Users/xxx/Desktop/库整理/库整理_20220616/"
inpath = 'yuan.xls'#excel文件所在路径
data = xlrd.open_workbook(inpath, encoding_override='utf-8')
table = data.sheets()[1]#选定表
nrows = table.nrows#获取行号
ncols = table.ncols#获取列号

for i in range(1, nrows):#第0行为表头,这里从第1行开始
    alldata = table.row_values(i)#循环输出excel表中每一行,即所有数据
    old = dirpath + alldata[0]#取出表中第1列数据
    new = dirpath + alldata[1]#取出表中第2列数据
    print("this is " + str(i) + " row ")
    print(old.split("\""))
    print(new)
    control = int(input("是否继续:"))
    if control ==1:
        os.rename(old,new)
        clear()  # 清除输出

12.批处理文件名:删掉文件名中的括号及括号中的内容(综合以上8-11的代码)

        注意事项:

        (1)只删掉文件名的括号及内容,不要误删了路径下的括号,所以得把文件名单独提取处理。

        (2)注意原始数据的格式,存在中文括号和英文括号,一定要区分!这里要删除的是中文括号。并且原始数据的格式是excel中超链接公式,如下:

=HYPERLINK("./02_专项预案\01_危化专项预案\深圳市罗湖区危险化学品事故应急预案.doc","深圳市罗湖区危险化学品事故应急预案.doc")

        (3)每次更改名字前需要交互确认一次,如不需要可自行删除。

from IPython.display import clear_output as clear
import xlrd
import re
import os, sys

def extract(inpath):
    
    data = xlrd.open_workbook(inpath, encoding_override='utf-8')
    table = data.sheets()[0]#选定表
    nrows = table.nrows#获取行号
    ncols = table.ncols#获取列号
    
    for i in range(60, nrows):#第0行为表头
        alldata = table.row_values(i)#循环输出excel表中每一行,即所有数据
        prename = alldata[0] + "," + alldata[1]#先保留原始的名字
        docname= str(alldata[0]).split('\\')[-1]#左边需要去掉括号的那一部分
        path1 = str(alldata[0]).replace(docname,"",1)#左边不需要处理的那一部分
        docname = re.sub(pattern,'',docname)#先单独处理左边需要删除括号的部分
        left = path1 + docname#然后将两部分合并起来
        right = re.sub(pattern,'',alldata[1])#取出表中第2列数据,并且删除括号吧
        rename= left+","+right
        rename = dirpath + rename.split("\"")[1].split("/")[1]
        prename =  dirpath + prename.split("\"")[1].split("/")[1]
        print("this is "+ str(i) + " row")
        print(prename)
        print(rename)
        control = int(input("是否继续:"))
        if control ==1:
            os.rename(prename,rename)
            clear()  # 清除输出

dirpath="C:/Users/xxx/Desktop/库整理/库整理_20220616/"        
inpath = 'yuan.xls'#excel文件所在路径
pattern = re.compile(r'\(.+?\)')
extract(inpath)

13.打印文件夹下所有文件名

import os
import re

path = "C:/Users/xxx/Desktop/库整理"
datanames = os.listdir(path)
for i in datanames:
    print(i)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值