用python将word文档导入数据库_python读取word文档,插入mysql数据库的示例代码

表格内容如下:

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

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

# wuyanfeng

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

# 读取docx中的文本代码示例

import docx

import pymysql

import re

import 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()

以上这篇python读取word文档,插入mysql数据库的示例代码就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

本文标题: python读取word文档,插入mysql数据库的示例代码

本文地址: http://www.cppcns.com/shujuku/mysql/243780.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/503991.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql编程语法_MYSQL语法(一)

数据表准备&#xff1a;CREATE TABLE student3 ( id int, name varchar(20), age int, sex varchar(5), address varchar(100), math int, english int);INSERT INTO student3(id,NAME,age,sex,address,math,english) VALUES(1,马云,55,男,杭州,66,78),(2,马化腾,45,女,深圳,98…

python绘制混淆矩阵_如何实现python绘制混淆矩阵?

大家从python基础到如今的入门&#xff0c;想必都对python有一定基础&#xff0c;今天小编给大家带来一个关于python的高阶内容——绘制混淆矩阵&#xff0c;一起来看下吧~介绍&#xff1a;混淆矩阵通过表示正确/不正确标签的计数来表示模型在表格格式中的准确性。计算/绘制混淆…

用python做舆情分析系统_科学网-如何用Python做舆情时间序列可视化?-王树义的博文...

如何批量处理评论信息情感分析&#xff0c;并且在时间轴上可视化呈现&#xff1f;舆情分析并不难&#xff0c;让我们用Python来实现它吧。痛点你是一家连锁火锅店的区域经理&#xff0c;很注重顾客对餐厅的评价。从前&#xff0c;你苦恼的是顾客不爱写评价。最近因为餐厅火了&a…

mysql load data outfile_mysql load data infile和into outfile的常规用法:

load data 可以将文件中的数据导入到表中,这种导入方法快速,高效.但是很容易出错,用法也比较复杂。需要额外定定义行分隔符,列分隔符.不同的格式文件,行,列分隔符的表示方式不一样。但是load data 的默认行列分隔符和txt的文件一样,所以为了少出错,最好使用与txt文件导入常规使…

tensorflow python3.6_[教程]Tensorflow + win10 + CPU + Python3.6+ 安装教程

由于各种原因&#xff0c;清华镜像源已经彻底挂掉了&#xff0c;但是目前网上的各种教程基本上都是采取设置清华镜像源来加快下载速度&#xff0c;所以这给小白带来了很大的困扰&#xff01;这里我将通过合理上网工具来直接下载源镜像。注意&#xff1a;本次教程适用于Win10系统…

正则表达式 任意数字_作为运维还不会正则表达式?赶快看这篇学习一下

概述正则表达式是很多运维薄弱的一项技能。大家很多时候都会觉得正则表达式难记、难学、难用&#xff0c;但不可否认的是正则表达式是一项很重要的技能&#xff0c;所有今天将学习和使用正则表达式时的关键点整理如下&#xff0c;仅供参考。什么是正则表达式&#xff1f;正则表…

vs xaml 语句完成 自动列出成员_数据传输 | mysqldiff/mysqldbcompare 实现 DTLE 自动化测试...

作者&#xff1a;张静文爱可生上海研发中心成员&#xff0c;测试工程师&#xff0c;负责 DMP 以及 DTLE 自动化测试。本文来源&#xff1a;原创投稿 *爱可生开源社区出品&#xff0c;原创内容未经授权不得随意使用&#xff0c;转载请联系小编并注明来源。任务&#xff1a;测试开…

js去el的map_JS中也可以使用JSTL和EL标签

//往上滑是调用分页function Ajax(currPage, pageSize) { // ajax后台交互String currPage,String pageSizevar el, Plist, i;el document.getElementById(thelist);var cancle function(options) {var pattern ${pageContext.request.contextPath}/integralParadise/userIn…

python 局域网主机扫描_python扫描局域网主机名

{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":4,"count":4}]},"card":[{"des":"阿里技术人对外发布原创技术内容的最大平台&…

python 并发执行命令_python: 多线程实现的两种方式及让多条命令并发执行

一 概念介绍Thread 是threading模块中最重要的类之一&#xff0c;可以使用它来创建线程。有两种方式来创建线程&#xff1a;一种是通过继承Thread类&#xff0c;重写它的run方法&#xff1b;另一种是创建一个threading.Thread对象&#xff0c;在它的初始化函数(__init__)中将可…

python全系列之爬虫scrapy_python爬虫scrapy之登录知乎

下面我们看看用scrapy模拟登录的基本写法&#xff1a;注意&#xff1a;我们经常调试代码的时候基本都用chrome浏览器&#xff0c;但是我就因为用了谷歌浏览器(它总是登录的时候不提示我用验证码&#xff0c;误导我以为登录时不需要验证码&#xff0c;其实登录时候必须要验证码的…

python 类方法 函数_Python OOP类中的几种函数或方法总结

概述实例方法使用实例调用时,默认传递实例本身到实例方法的第一个参数self使用类调用时,必须传递一个实例对象到实例方法的第一个参数静态方法使用实例调用和类调用效果相同;类方法装饰器版:使用实例调用和类调用效果相同;classmethod(function)版:在类中,尽量不要使用classmet…

raft算法_Raft算法与实现

强一致性、高可用的存储组件是构建现代分布式系统的必要条件&#xff0c;广泛应用于注册中心、配置中心等平台设施中&#xff0c;分布式锁、协调器等等各类场景需求也有相关需求&#xff0c;在该领域有众多知名的开源组件&#xff0c;如etcd、zookeeper、Tikv等等。共识算法是实…

python桌面翻译_Python实现桌面翻译工具【新手必学】

Python 用了好长一段时间了&#xff0c;起初是基于对爬虫的兴趣而接触到的。随着不断的深入&#xff0c;慢慢的转了其它语言&#xff0c;毕竟工作机会真的太少了。很多技能长时间不去用&#xff0c;就会出现遗忘&#xff0c;也就有了整理一下&#xff0c;供初学者学习和讨论。相…

python 环境管理工具_再见 virtualenv!K神教你轻松管理多个Python环境

原标题&#xff1a;再见 virtualenv&#xff01;K神教你轻松管理多个Python环境超级无敌干货第一时间推给你&#xff01;&#xff01;&#xff01;小编电脑上有多个 Python 开发环境&#xff0c;每次都是用 virtualenv 创建一个 Python 虚拟环境&#xff0c;pip 安装第三方库&a…

mysql选取最小值_MySQL:选择x最小值

是否希望此工作(未测试):SELECT moname, MIN(updatetime) FROM amoreAgentTST01GROUP BY moname HAVING COUNT(moname)>1编辑-上面的意思只是作为现有代码的替换,所以它不会直接回答您的问题。我认为这样的事情应该适用于你的主要问题:SELECT moname, updatetime FROM amore…

python22起作业答案_python第22天作业

今日作业&#xff1a;1、检索文件夹大小的程序要求执行方式如下python3.8 run.py 文件夹import osimport sysfile_list os.listdir(sys.argv[1])def file_size(file_list,size 0):for file in file_list:if not os.path.isfile(file):file_list os.listdir(file)if not file…

python字典导入mongodb_Python语言生成内嵌式字典(dict)-案例从python提取内嵌json写入mongodb...

本文主要向大家介绍了Python语言生成内嵌式字典(dict)-案例从python提取内嵌json写入mongodb&#xff0c;通过具体的内容向大家展示&#xff0c;希望对大家学习Python语言有所帮助。从mongo查询利用python 读写如新的集合import traceback,from gaode_hotel.conn_mongodb impor…

python把浮点数转换成16进制_Python将colorsys RGB坐标转换为十六进制

从this answer开始,我在Python中生成一些均匀间隔的颜色,如下所示&#xff1a;>>> import colorsys>>> num_colors 22>>> hsv_tuples [(x*1.0/num_colors, 0.5, 0.5) for x in range(num_colors)]>>> rgb_tuples map(lambda x: colorsy…

静态ip ssh无法登录_识别动静态IP的技巧

动态IP&#xff0c;又称DHCP上网&#xff0c;即自动获取IP上网。动态IP这种上网方式&#xff0c;连接网络时即可自动获取IP地址来正常上网。在未使用路由器的情况下&#xff0c;只需要把宽带网线连接到电脑上&#xff0c;电脑上的IP地址设置为自动获得&#xff0c;电脑就可以实…