在word文件中查找标题,然后使用python将整个段落复制到新的word文件中

时间:2017-12-07 21:08:13

标签: python list csv ms-word docx

我有以下情况:

我有几百个包含公司信息的word文件。我想在这些文件中搜索特定的单词以查找特定的段落,并将这些段落复制到新的单词文件中。基本上我只需要将原来的几百个文档减少到更可读的大小。

我所拥有的文件位于一个目录中,并带有不同的名称。在每一个中,我想提取我需要单独定义的特定信息。

为此,我首先使用以下代码首先将所有文件名写入.csv文件:

# list all transcript files and print names to .csv

import os
import csv

with open("C:\\Users\\Stef\\Desktop\\Files.csv", 'w') as f:
    writer = csv.writer(f)
    for path, dirs, files in os.walk("C:\\Users\\Stef\\Desktop\\Files"):
        for filename in files:
            writer.writerow([filename])

这完美无缺。接下来,我打开Files.csv并编辑我需要在每个文档中搜索的关键字的第二列。

请参阅下面的图片,了解.csv文件的外观:

CSV file

我拥有的几百个单词文件,由不同的标题层组成。我现在想要做的是使用.csv中手动定义的关键字搜索特定标题,然后将以下段落的内容复制到新文件中。我上传了一个word文件的摘录," Presentation"是一个'标题1'和"北美"和#34;中国"是'标题2'。

Word example

在这种情况下,我希望例如搜索标题2' "北美"然后将下面的文本("总共[...]稀释的基础。)复制到一个与旧名称相同的新单词文件中添加" _clean.docx&#34 ;。

我开始使用我的代码如下:

import os
import glob
import csv
import docx

os.chdir('C:\\Users\\Stef\\Desktop')

f = open('Files.csv')
csv_f = csv.reader(f)

file_name = []
matched_keyword = []

for row in csv_f:
  file_name.append(row[0])
  matched_keyword.append(row[1])

filelist = file_name
filelist2 = matched_keyword

for i, j in zip(filelist, filelist2):
  rootdir = 'C:\\Users\\Stef\\Desktop\\Files'
  doc = docx.Document(os.path.join(rootdir, i))

在此之后我无法找到任何有效的解决方案。我尝试过一些东西,但根本无法成功。我将非常感谢您的进一步帮助。

我认为结局应该再次看起来像这样,但不太确定。

output = 
output.save(i +"._clean.docx")

考虑了以下问题和想法:

Extracting MS Word document formatting elements along with raw text information

extracting text from MS word files in python

How can I search a word in a Word 2007 .docx file?

1 个答案:

答案 0 :(得分:0)

只是为我自己想出了类似的东西,所以这里是一个完整的工作示例。可能是更Python化的方式...

n

我还添加了输入文件的图像,显​​示北美出现在多个地方。 Test Word File