python读取word文档,插入mysql数据库实例

表格内容如下:

1、实现批量导入word文档,取文档标题中的数字作为编号

2、除取上面打钩的内容需要匹配出来入库入库,其他内容全部直接入库mysql

# wuyanfeng# -*- coding:utf-8 -*-# 读取docx中的文本代码示例import docximport pymysqlimport reimport os

# 创建数据库链接conn = pymysql.connect(    host=‘rm-bp1vu5d84dg12c6d59o.mysql.rds.aliyuncs.com‘,    port=3306,    user=‘root‘,    passwd=‘wYf092415*‘,    db=‘pays‘,    charset=‘utf8‘,)# 创建游标cursor = conn.cursor()

#切片函数def section(info,key,len11):    a = len(info)    print(a, type(a))    d = []    e = 0    g = -1    i = 0    task_class=[]    while i < len(info):        # for i in range(len(info)):        # i+=1        print("i::::", i)        try:            #c = info.index("a", e)            #print("c:::::", c)            c = info.index(key, e)            #print("c:::::", c)

print("c类型判断",type(c))        except ValueError:            print(ValueError)        try:            if (c != ‘‘) & (g < int(c)):                d.append(c)                g = c                i = c + 1                print("illlldddd:", i)                e = c + 1                continue

elif (c == ‘‘):                 break        except UnboundLocalError:            print(UnboundLocalError)

return task_class        break    print("d", d, type(d))    print(d[0], type(d[0]))    print("d的长度:",len(d))    #开始切片    if len(d) != 0:        for j in range(len(d)):            print("info11:::", info, type(info))            info = ‘‘.join(info)            print("info222:::",info,type(info))            print("d[%d]"%j,d[j])            #print("d[j]:5"%j,info[d[j]:5])

llll = info[d[j]+1:d[j]+5]            print("d[%d]:5" % j, llll)            task_class.append(llll)            print("task_class::11", task_class)

task_class=",".join(task_class)    print("str1112222",task_class)    return task_class

def insettable(file):    print("file::::::::::::::::::::", file)    print("type::::::::::::::::::::", type(file))    # file1 = file    # file1 = str(file1)    ddd = re.findall("知识库\\\(\d+)", file)    print("ddd:::::::::::", ddd)    print("ddd[0]:::", ddd[0])    ddd = int(ddd[0])    print("ddd::::", type(ddd))

file = docx.Document(file)    # 读取表格:    t = file.tables[0]    print(t)    print("1:", t.cell(0, 0).text)  # 1    cell1 = t.cell(0, 0).text    print("tyep::::", type(t.cell(0, 0).text))

print("2:", t.cell(0, 1).text)  # 2    cell2 = t.cell(0, 1).text

print("2:", t.cell(0, 2).text)  # 2    cell3 = t.cell(0, 2).text

print("2:", t.cell(0, 3).text)  # 2    cell4 = t.cell(0, 3).text    print("cell4:::::::::", cell4)

print("3:", t.cell(1, 0).text)  # 3    cell5 = t.cell(1, 0).text

print("4:", t.cell(1, 2).text)  # 4    cell6 = t.cell(1, 2).text

print("5:", t.cell(1, 3).text)  # 5    task_type = t.cell(1, 3).text    # task_type = re.findall(‘.*[?√](.*)$‘, cell7)    # task_type = ‘‘.join(cell7)    print("task_type111111:", task_type)    # task_class = task_class[0:4]    ‘‘‘低级处理方式    a = int(task_type.count("?"))    print("a|||||||", a, type(a))    b = int(task_type.count("√"))    print("b|||||||", b, type(a))    if (a == 1) | (b == 1):        print("111111111111111111")        # task_type = re.findall(‘.*[?√](.*)$‘, task_type)        task_type = re.findall(‘.*[?√](.*)$‘, task_type)        print("task_type1", task_type)        task_type = ‘‘.join(task_type)        print("task_type2", task_type)        task_type = task_type[0:4]        print("task_type3:d:%s,b=%d" % (a, b), task_type)    elif (a == 0) & (b == 0):        print("2222222222222222222")        task_type = ‘法定职责‘        print("a:%s,b=%s" % (a, b), task_type)    elif (a == 2) | (b == 2):        print("333333333333333333333")        task_type = ‘法定职责,工作职责 ‘        print("a:%s,b=%s" % (a, b), task_type)    ‘‘‘    #调用切片函数    task_type1 = section(task_type, "√", 4)    task_type2 = section(task_type, "?", 4)    task_type1 = "".join(task_type1)    task_type2 = "".join(task_type2)    print("task_type1:::", task_type1,type(task_type1))    print("task_type2:::", task_type2,type(task_type2))    if task_type1.strip()!="":        task_type = task_type1        print("task_type111:::", task_type1)    elif task_type2.strip()!="":        task_type = task_type2        print("task_type222:::", task_type2)

print("6:", t.cell(1, 4).text)  # 6    cell8 = t.cell(1, 4).text

print("7:", t.cell(2, 1).text)  # 7    cell9 = t.cell(2, 1).text

# 获取文档对象    # file = docx.Document("D:\\配置库\\公案APP\\1.2 系统规格\\知识库\\14人员死亡先期处置.docx")    print("段落数:" + str(len(file.paragraphs)))  # 段落数为13,每个回车隔离一段    lenn = len(file.paragraphs)    print("len:", lenn)    # 输出每一段的内容    for para in file.paragraphs:        print(para.text)

# 输出段落编号及段落内容    for i in range(len(file.paragraphs)):        print("第" + str(i) + "段的内容是:" + file.paragraphs[i].text)

list6 = []    for i in range(len(file.paragraphs)):        if 0 == i:            print("i:", i)            lis0 = file.paragraphs[i].text            print("list0:", lis0)            print(type(lis0))

elif 1 == i:            print("i:", i)            task_class = file.paragraphs[i].text            print("lis1", task_class,type(task_class))            ‘‘‘低级处理方式            print("task_class111111:", task_class)

c = int(task_class.count("?"))            task_class = ‘‘.join(task_class)            #print(task_class.index(‘?‘))            print("c|||||||", c, type(c))            d = int(task_class.count("√"))            print(task_class.index(‘√‘))

print("d|||||||", d, type(d))            task_class = re.findall(r‘[?√](?:.*)‘, task_class)            task_class = ‘‘.join(task_class)            task_class = task_class[1:5]            print("task_class", task_class)        ‘‘‘            #调用切片函数            task_class1 = section(task_class, "√", 4)            task_class2 = section(task_class, "?", 4)            task_class1 = "".join(task_class1)            task_class2 = "".join(task_class2)            print("task_class1:::", task_class1,type(task_class1))            print("task_class2:::", task_class2,type(task_class2))            if task_class1.strip()!="":                task_class = task_class1                print("task_class11:::", task_class1)            elif task_class2.strip()!="":                task_class = task_class2                print("task_class22:::", task_class2)

if 2 == i:            print("i:", i)            lis2 = file.paragraphs[i].text

print("lis2", lis2)            print(type(lis2))            preparer = re.findall(‘填表单位:(.*?)$‘, lis2)            preparer = ‘‘.join(preparer)            print("preparer:%s" % preparer)

# elif 3 == i:        #     print("i:", i)        #     lis3 = file.paragraphs[i].text        elif 3 == i:            print("i:", i)            lis4 = file.paragraphs[i].text            print("lis4", lis4)            print(type(lis4))        elif 3 < i < lenn - 1:            print("i:", i)            print(file.paragraphs[i].text)            print(type(file.paragraphs[i].text))            # list6[i-5] = list6.append(file.paragraphs[i].text)            list6.append(str(file.paragraphs[i].text).strip(‘\xa0‘))            # list6.append("%s\n" % str(file.paragraphs[i].text).strip(‘\xa0‘))            print(list6)    key_steps = "\n".join(list6)    # print("key_steps:\n",key_steps.strip(‘\n‘))

cursor.execute(        "insert into `t_knowledge_base` (`no`, `preparer`, `task_class`, `task_name`, `task_specification`, `task_type`, `task_desc`, `task_basis`, `key_steps`) values (‘%d‘,‘%s‘,‘%s‘,‘%s‘,‘%s‘,‘%s‘,‘%s‘,NULL,‘%s‘)" % (            ddd, preparer, task_class, cell2, cell4, task_type, cell9, key_steps))    conn.commit()

def traverse(f):    fs = os.listdir(f)    for f1 in fs:        tmp_path = os.path.join(f, f1)        if not os.path.isdir(tmp_path):            print(‘文件: %s‘ % tmp_path)            insettable(tmp_path)        else:            print(‘文件夹:%s‘ % tmp_path)            traverse(tmp_path)

path = ‘D:\\配置库\公案APP\\1.2 系统规格\\知识库‘traverse(path)

#单文件调测# path = ‘D:\\配置库\\公案APP\\1.2 系统规格\\知识库\\14人员死亡先期处置.docx‘# insettable(path)

# 关闭游标cursor.close()# 关闭连接conn.close()

原文地址:https://www.cnblogs.com/wzsx/p/9228557.html

时间: 2024-10-29 19:12:04

python读取word文档,插入mysql数据库实例的相关文章

python读取word文档中的表格内容

import docx fn = r'D:\长恨歌.docx' doc = docx.Document(fn) # 按段落读取全部数据 for paragraph in doc.paragraphs: print(paragraph.text) # 按表格读取全部数据 for table in doc.tables: for row in table.rows: for cell in row.cells: print(cell.text) table_num = len(doc.tables)

java读取Excel文档插入mysql

/** * 读取excel插入myslq */package com.excel; import java.io.BufferedInputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.sql.Connection;import java.sql.PreparedStateme

Word 文档插入时间日期禁止自动更新

前些天写了点总结并插入时间和日期,记得勾掉了那个自动更新的,但是刚才打开时发现当时的日期和时间变成现在的了,我就纳闷了,然后我去看那插入日期和时间的那个框,里面确实没有勾选自动更新,于是百度, 百度都说只要把那个自动更新的勾去掉了就不会自动更新了,但是我的怎么就自动更新了呢? 是这样的,在你完成插入操作之前要把那个自动更新的勾去掉,再去插入时间和日期,这样插入的时间和日期就不会自动更新了,我当时是用的快捷键插入的时间和日期, 然后再去去掉那个自动更新的勾,这样其实没用了,记住在不需要自动更新时间

asp.net页面读取word文档内容显示

用asp.net实现对指定word文档内容的读取显示该如何实现?比如左边读取指定文件夹中所有的word文档,以文档的标题作为链接,点击文档标题则在右边某位置显示出该word文档中的内容(包括字体样式,图片显示等). 可以这样实现: 操作WORD配置说明 引入:Word的对象库文件“MSWORD.OLB”(word 2000为MSWORD9.OLB) 1.运行Dcomcnfg.exe 2.组件服务――计算机――我的电脑――DCOM配置――找到microsoft word 文档 3.点击属性 4.选

C#如何向word文档插入一个新段落及隐藏段落

向Word文档插入一个新段落的操作步骤 步骤1:新建一个文档并加载现有文档 Document document = new Document(); document.LoadFromFile(@"C:\Users\Administrator\Desktop\向日葵.docx", FileFormat.Docx); 步骤2:插入新段落并设置字体格式 Paragraph paraInserted = document.Sections[0].AddParagraph(); TextRang

使用poi读取word文档

看了很多资料,就一点一点总结吧. word2003和word2007以及以上的后缀名都不一样,一个是doc一个是docx,所以在解析的时候也不一样,而这边主要是使用poi.但是看了很多资料都没有找到所谓的3.8的版本,在官网上只能找到3.11版本(或是是个人的英语水平不行吧) 这个小dome主要就是一个简单的读取word文档,复杂的继续研究: public class ReadWord {    public static void main(String[] args) {        tr

Java读取word文档解决方案

java读取word文档时,虽然网上介绍了很多插件poi.java2Word.jacob.itext等等,poi无法读取格式(新的API估计行好像还在处于研发阶段,不太稳定,做项目不太敢用):java2Word.jacob容易报错找不到注册,比较诡异,我曾经在不同的机器上试过,操作方法完全一致,有的机器不报错,有的报错,去他们论坛找高人解决也说不出原因,项目部署用它有点玄:itxt好像写很方便但是我查了好久资料没有见到过关于读的好办法.经过一番选择还是折中点采用rtf最好,毕竟rtf是开源格式,

[转载]linux上用PHP读取WORD文档

在linux上用PHP读取WORD文档,其实是使用了 antiword程序把word文档转化为txt文档. 再使用php执行系统命令调用而已. 具体操作如下: 1.安装antiword 官方站:http://www.winfield.demon.nl/ 下载地:http://www.winfield.demon.nl/linux/antiword-0.37.tar.gz 下载完,解压,进入目录 使用命令 make && make install 即可完成安装. 安装时,自动安装到了/roo

怎么才能将Word文档插入到CAD中?

怎么才能将Word文档插入到CAD中?在日常的编辑CAD图纸的过程中,建筑设计师们会遇到许许多多的问题,但是这些问题有必须去解决它,对于CAD小白来说这也是一项非常困难的工作,比如说怎么才能将Word文档插入到CAD中?具体要怎么操作才能实现了?下面小编就来教教大家在迅捷CAD编辑器专业版中怎么才能将Word文档插入到CAD中?想要了解的朋友就一起来看看吧! 第一步:打开任意一个浏览器,在浏览器的搜索框中搜索迅捷CAD编辑器专业版,然后进入到迅捷CAD的官网,进去之后点击下载安装最新版本的CAD