工作中碰到这样一个情况:有多个关键词存在文本文档txt中,想查找下在某个较大的word文档中,这些关键词是否都含有,没有关键词的显示出来。

因为关键词比较多,并且这个工作还是经常会有的,这个情况我试着用Python3写代码解决。

分析后,需要用到的模块有:docx,另外还有txt文档的读取和字符串的匹配。

首先是安装docx模块  pip install python-docx

具体实现代码如下:

import docx
path = "F:\\check\\source.docx"
def readDocx(docName):                 #创建读取doc文档内容的函数,去除格式
fullText = []
doc = docx.Document(docName)
paras = doc.paragraphs
for p in paras:
fullText.append(p.text)
return '\n'.join(fullText)
doccontent=readDocx(path) textcon= open('F:/check/findtext.txt','r',encoding='utf-8') #只读方式打开text文件b j=0 #用于显示txt文档中的行号
for i in textcon:
linecon=i.strip() #Python strip() 方法用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列
j=j+1
    if linecon not in doccontent:
print(linecon)
print(j)
textcon.close()

写在后面的话:

1.查找字符串时,原计划用re函数匹配

compiletext=re.compile(r'\wlinecon\w')
result_comp = compiletext.findall(doccontent.paragraphs)

因读取docx时,是带格式的,结果使用re函数怎么运行都报错:TypeError: expected string or bytes-like object

解决办法参考blog:https://www.cnblogs.com/wrajj/p/4914102.html

2.字符串的匹配,原来想用正则表达式中的函数来解决,结果试了半天,才发现字符串匹配有很简单的方式,详情见blog:https://www.cnblogs.com/huiAlex/p/7994606.html
 

最新文章

  1. 自己用C语言写PIC32 serial bootloader
  2. Codeforces Round #326 (Div. 2) B. Duff in Love 分解质因数
  3. 问题:loadrunner录制event为0
  4. ECSHOP模板设置,前台英文后台中文,无需复制
  5. *[codility]ArrayInversionCount
  6. 45个必备的实用jQuery代码段[转载]
  7. windows 7 SDK和DDK下载地址
  8. 如何用C#把Doc文档转换成rtf格式
  9. C语言复合梯形公式实现定积分
  10. Set 与 Multiset
  11. loadrunner 录制中文出现乱码的解决办法
  12. 认识Ajax
  13. redis五种数据类型的使用场景
  14. 【杂题1】USACO 2018 Open Contest-练习
  15. MFC函数—CSingleDocTemplate
  16. css+div水平居中
  17. ZooKeeper实现分布式队列Queue
  18. csu 1555(线段树经典插队模型-根据逆序数还原序列)
  19. python练习题(持续更新中。。。。。)
  20. nginx 反向代理与负载均衡应用实践

热门文章

  1. 【原创】Linux Suspend流程分析
  2. HDU - 4305 - Lightning 生成树计数 + 叉积判断三点共线
  3. Codeforces Round #381 (Div. 2) C. Alyona and mex(无语)
  4. poj1651 Multiplication Puzzle(简单区间dp)
  5. 线段树模板 hdu 1166 敌兵布阵
  6. 通过CMD命令窗口获取django版本号
  7. github 授权登录教程与如何设计第三方授权登录的用户表
  8. adb命令介绍
  9. 51NOD---逆序对(树状数组 + 归并排序)
  10. mysql之innodb-锁