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


Posted in Python onNovember 07, 2018

表格内容如下:

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 相关文章推荐
python统计一个文本中重复行数的方法
Nov 19 Python
浅谈numpy库的常用基本操作方法
Jan 09 Python
Python实现加载及解析properties配置文件的方法
Mar 29 Python
对Python中range()函数和list的比较
Apr 19 Python
python读取目录下最新的文件夹方法
Dec 24 Python
Python3批量生成带logo的二维码方法
Jun 24 Python
在Python中合并字典模块ChainMap的隐藏坑【推荐】
Jun 27 Python
python实现微信自动回复及批量添加好友功能
Jul 03 Python
Python求离散序列导数的示例
Jul 10 Python
Python 实现的 Google 批量翻译功能
Aug 26 Python
Python操作Jira库常用方法解析
Apr 10 Python
Windows环境下Python3.6.8 importError: DLLload failed:找不到指定的模块
Nov 01 Python
pandas.DataFrame删除/选取含有特定数值的行或列实例
Nov 07 #Python
python 返回列表中某个值的索引方法
Nov 07 #Python
pandas 根据列的值选取所有行的示例
Nov 07 #Python
Pandas过滤dataframe中包含特定字符串的数据方法
Nov 07 #Python
pandas筛选某列出现编码错误的解决方法
Nov 07 #Python
python绘制中国大陆人口热力图
Nov 07 #Python
利用Python将数值型特征进行离散化操作的方法
Nov 06 #Python
You might like
PHP在线书签系统分享
2016/01/04 PHP
js 获取屏幕各种宽高的方法(浏览器兼容)
2013/05/15 Javascript
原生js操作checkbox用document.getElementById实现
2013/10/12 Javascript
JS复制到剪贴板示例代码
2013/10/30 Javascript
Node.js编码规范
2014/07/14 Javascript
jQuery插件bxSlider实现响应式焦点图
2015/04/12 Javascript
JavaScript 消息框效果【实现代码】
2016/04/27 Javascript
基于JavaScript Array数组方法(新手必看篇)
2016/08/20 Javascript
BootStrap实现带有增删改查功能的表格(DEMO详解)
2016/10/26 Javascript
JavaScript中英文字符长度统计方法示例【按照中文占2个字符】
2017/01/17 Javascript
Bootstrap组合上、下拉框简单实现代码
2017/03/06 Javascript
Vue2.0利用vue-resource上传文件到七牛的实例代码
2017/07/28 Javascript
shiro授权的实现原理
2017/09/21 Javascript
jQuery 筛选器简单操作示例
2019/10/02 jQuery
vue中渲染对象中属性时显示未定义的解决
2020/07/31 Javascript
解决vue 退出动画无效的问题
2020/08/09 Javascript
解决element-ui的下拉框有值却无法选中的情况
2020/11/07 Javascript
写一个Vue loading 插件
2020/11/09 Javascript
Python 过滤字符串的技巧,map与itertools.imap
2008/09/06 Python
通过Python实现自动填写调查问卷
2017/09/06 Python
Python基于hashlib模块的文件MD5一致性加密验证示例
2018/02/10 Python
pip安装python库的方法总结
2019/08/02 Python
Pytorch技巧:DataLoader的collate_fn参数使用详解
2020/01/08 Python
python logging设置level失败的解决方法
2020/02/19 Python
澳大利亚最好的在线时尚精品店:Princess Polly
2018/01/03 全球购物
店面销售职位的职责
2014/03/09 职场文书
社区交通安全实施方案
2014/03/22 职场文书
党校培训自我鉴定范文
2014/04/10 职场文书
创意婚礼策划方案
2014/05/18 职场文书
文明生主要事迹
2014/05/25 职场文书
主要负责人任命书
2014/06/06 职场文书
2014年党员自我评议(5篇)
2014/09/12 职场文书
敲诈同学钱财检讨书范文
2014/11/18 职场文书
2015年高中班主任工作总结
2015/04/30 职场文书
党小组意见范文
2015/06/08 职场文书
mysql中int(3)和int(10)的数值范围是否相同
2021/10/16 MySQL