将word文档中的题目和答案抽取出来,放入表格中。其中答案是高亮显示的。
import pandas as pd
from docx import Document
import re
# 读取 docx 文件
def read_docx(file_path):
document = Document(file_path)
questions = []
answers = []
# 正则表达式匹配题号,支持一位或多位数字后跟一个点(全角或半角),以及可选的空格
question_pattern = re.compile(r'^\d+[\.\.]\s*')
for para in document.paragraphs:
text = para.text.strip()
if not text: # 跳过空段落
continue
# 检查是否是新题目
if question_pattern.match(text):
# 添加新题目
questions.append(text)
answers.append([]) # 为新题目创建答案列表
# 检查题目段落中是否包含答案(高亮文本)
highlighted_text = []
for run in para.runs:
if run.font.highlight_color:
highlighted_text.append(run.text.strip())
if highlighted_text:
answers[-1].extend([t for t in highlighted_text if t])
else:
# 非题目段落,检查是否包含答案(高亮文本)
highlighted_text = []
for run in para.runs:
if run.font.highlight_color:
highlighted_text.append(run.text.strip())
if highlighted_text and answers: # 确保有题目存在
answers[-1].extend([t for t in highlighted_text if t])
# 清理空答案
answers = [[ans for ans in answer_list if ans] for answer_list in answers]
return questions, answers
# 将数据转换为 DataFrame
def create_dataframe(questions, answers):
data = {
"问题": questions
}
# 处理答案,将它们放到不同的列中
max_answers = max(len(ans) for ans in answers)
for i in range(max_answers):
data[f"答案{i+1}"] = [ans[i] if i < len(ans) else None for ans in answers]
df = pd.DataFrame(data)
return df
# 主函数
def main():
file_path = '华为认证HCIP-AI测试卷+答案.docx' # 请替换为你的文件路径
#file_path = 'HCIPtest.docx' # 请替换为你的文件路径
questions, answers = read_docx(file_path)
df = create_dataframe(questions, answers)
# 保存为 Excel 文件
output_file = 'questions_and_answers.xlsx'
df.to_excel(output_file, index=False)
print(f"表格已保存为 {output_file}")
if __name__ == "__main__":
main()
网友评论