Python 从多个Word文件中收集字符串,并将其按顺序存储在dataframe中

Python 从多个Word文件中收集字符串,并将其按顺序存储在dataframe中,python,pandas,dataframe,Python,Pandas,Dataframe,我试图从多个Word文件中收集信息,这些文件存储在不同的文件夹和子文件夹中。 使用下面的脚本,我无法获得完整信息,当我尝试从旧word格式提取数据时-“.doc”给了我一个错误,它不是word格式 import glob import os import re import docx with open('your_file.txt', 'w') as f: for directory in glob.glob('*'): for filename in glob.

我试图从多个Word文件中收集信息,这些文件存储在不同的文件夹和子文件夹中。 使用下面的脚本,我无法获得完整信息,当我尝试从旧word格式提取数据时-“.doc”给了我一个错误,它不是word格式

import glob
import os
import re
import docx



with open('your_file.txt', 'w') as f:
    for directory in glob.glob('*'):
        for filename in glob.glob(os.path.join(directory, "*")):
            if filename.endswith((".docx")):
                document = docx.Document(filename)
                for paragraph in document.paragraphs:
                    if paragraph.text:
                        #docText.append(paragraph.text)
                        f.write(paragraph.text)
包含Word数据的文件夹/存在子文件夹/:

Regex没有处理段落.text,我试图在文本文件中提取信息,然后获取信息。我需要在数据框中收集:公司名称、交易名称、价值、描述

import re
import pandas as pd

raw_data = open('your_file.txt', 'r').read()
FirmName = re.findall(r'Firm name\s*(.*?)\s*Marketing', raw_data, flags=re.DOTALL)
DealName = re.findall(r'Deal name\s*(.*?)\s*Date completed', raw_data, flags=re.DOTALL)
Value = re.findall(r'Date Completed\s*(.*?)\s*Cliet(s) advised', raw_data, flags=re.DOTALL)
Description = re.findall(r'Description\s*(.*?)\s*Deal Name', raw_data, flags=re.DOTALL)
df = pd.DataFrame(columns=['Firm Name', 'Deal Name','Value', 'Description'])
df = df.append({'Firm Name': FirmName, 'Deal Name': DealName, 'Value': Value, 'Description': Description}, ignore_index=True)
df.to_csv(r'dataset.csv', index=False)
我遇到的问题是,当我在一个文本文件中收集全部信息时,regex提取不按顺序进行。每个word文件都有一个公司名称和多个交易、价值和描述。期望输出结果:

Sample.docx输出:


Re:“当我试图从旧word格式提取数据时,”.doc“给我一个错误,它不是word格式…”并没有说它不是word格式(因为它是),而是说库无法读取它。这是出于设计:“您可以用这种方式打开任何Word 2007或更高版本的文件(.doc文件来自Word 2003和更早版本将不起作用)”,我的第一个猜测是,您尝试获取的段落位于一行,因此regex不会捕获下一行的数据。您能提供一个示例.docx输出吗?如果上面的输出真的像这样对齐,那么解析起来就非常糟糕了。你能提供一个“真实”的文件吗?对不起。附上一份样本文件