如何从 python 中的 word 文档中提取文本? (并将数据放入 df)
How to extract text from a word document in python? (and put the data in df)
我有一大堆文件夹和文件(.docx 文档)。所以,我想做的是创建一个包含四列的 df,其中包含这些文件夹和文件的名称,而且我还想提取 word 文档中的两个值。然后 df 应该有 4 列:文件夹、文件、值和日期。
我已经设法将文件夹的名称和 docx 文件放在 df 中,如以下代码所示。
# imports
import os
import pandas as pd
path = ''
data = []
for folder in sorted(os.listdir(path)):
if folder.startswith('HH'):
for file in sorted(os.listdir(path + '/' + folder)):
if file.endswith('.docx'):
data.append((folder, file))
df = pd.DataFrame(data, columns=['Folder', 'File_name'])
df
但是,我找不到从 .docx 文件中获取所需值的方法。我首先尝试像这样单独进行:
# Import the module
import docx2txt
path2 = ''
# Open the .docx file
document = docx2txt.process(path2)
document
我得到了这个结果:
'Property Nr: \tTEST\n\nProperty Comments\t\t\t\n\n\t\t \n\n\n\n\n\n\n\n\n\nReinstatement value \t\n\nEuro __ 191,250.00 excl VAT\n\n\t\t\n\nReinstatement value \t\n\nEuro __ 191,250.00 excl VAT\n\n\t\t\n\n\n\n\n\n\n\n\n\nSigned:\n\n________________________________\n\nPerit TEST\n\nDate: 24th June 2021\n\n\n\nSigned:\n\n________________________________\n\nTEST\n\nDate: 24th June 2021'
我要的两个值是:
Euro __ 191,250.00
中的数字
- 日期:
24th June 2021
如果您能至少帮助我获取这些值,我将不胜感激。
谢谢
您可以使用 re.search()
.
如果您的文档是 str
类型,请尝试以下代码。
import re
value_match = re.search('Euro __ (.*)excl', document)
value = value_match.group(1).strip()
date_match = re.search('Date:(.*)', document)
date = date_match.group(1).strip()
print(f"Value: {value}, Date: {date}")
输出:
Value: 191,250.00, Date: 24th June 2021
我有一大堆文件夹和文件(.docx 文档)。所以,我想做的是创建一个包含四列的 df,其中包含这些文件夹和文件的名称,而且我还想提取 word 文档中的两个值。然后 df 应该有 4 列:文件夹、文件、值和日期。
我已经设法将文件夹的名称和 docx 文件放在 df 中,如以下代码所示。
# imports
import os
import pandas as pd
path = ''
data = []
for folder in sorted(os.listdir(path)):
if folder.startswith('HH'):
for file in sorted(os.listdir(path + '/' + folder)):
if file.endswith('.docx'):
data.append((folder, file))
df = pd.DataFrame(data, columns=['Folder', 'File_name'])
df
但是,我找不到从 .docx 文件中获取所需值的方法。我首先尝试像这样单独进行:
# Import the module
import docx2txt
path2 = ''
# Open the .docx file
document = docx2txt.process(path2)
document
我得到了这个结果:
'Property Nr: \tTEST\n\nProperty Comments\t\t\t\n\n\t\t \n\n\n\n\n\n\n\n\n\nReinstatement value \t\n\nEuro __ 191,250.00 excl VAT\n\n\t\t\n\nReinstatement value \t\n\nEuro __ 191,250.00 excl VAT\n\n\t\t\n\n\n\n\n\n\n\n\n\nSigned:\n\n________________________________\n\nPerit TEST\n\nDate: 24th June 2021\n\n\n\nSigned:\n\n________________________________\n\nTEST\n\nDate: 24th June 2021'
我要的两个值是:
Euro __ 191,250.00
中的数字- 日期:
24th June 2021
如果您能至少帮助我获取这些值,我将不胜感激。 谢谢
您可以使用 re.search()
.
如果您的文档是 str
类型,请尝试以下代码。
import re
value_match = re.search('Euro __ (.*)excl', document)
value = value_match.group(1).strip()
date_match = re.search('Date:(.*)', document)
date = date_match.group(1).strip()
print(f"Value: {value}, Date: {date}")
输出:
Value: 191,250.00, Date: 24th June 2021