欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 美食 > python对文件的读写操作

python对文件的读写操作

2024/11/30 7:20:04 来源:https://blog.csdn.net/m0_51148715/article/details/143260009  浏览:    关键词:python对文件的读写操作

任务:读取文件夹下的批量txt数据,并将其写入到对应的word文档中。
txt文件中包含:编号、报告内容和表格数据。写入到word当中:编号、报告内容、表格数据、人格雷达图以及对应的详细说明(详细说明是根据表格中的标识那一列中的加号有无来对应进行写入)。
txt文件中的详细信息如下图所示:
在这里插入图片描述
写入到word当中的内容如下图所示:
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
下面是对应的代码:
第一个python文件是读txt中的表格数据,并写入excel表中。

import pandas as pd
import re
import osdef process_single_txt_file(file_path, output_folder):try:with open(file_path, 'r', encoding='utf-8') as file:lines = file.readlines()except FileNotFoundError:print(f"文件 {file_path} 未找到,请检查路径是否正确。")return# 解析表格数据table_data = []pattern = re.compile(r'([\u4e00-\u9fa5A-Za-z]+)\s+([\d.]+)\s+([\d.~]+)\s*(\+?)')for line in lines:match = pattern.search(line)if match:task, result, reference, flag = match.groups()table_data.append([task, result, reference, flag])# 转换为DataFramedf = pd.DataFrame(table_data, columns=['任务名称', '结果', '参考数值', '标识'])# 保存为Excelbase_name = os.path.splitext(os.path.basename(file_path))[0]output_excel_path = os.path.join(output_folder, f'{base_name[0:8]}.xlsx')try:df.to_excel(output_excel_path, index=False)print(f"数据已成功写入Excel文件:{output_excel_path}")except Exception as e:print(f"写入Excel文件时发生错误: {e}")def process_all_txt_files_in_folder(folder_path, output_folder):# 确保输出文件夹存在os.makedirs(output_folder, exist_ok=True)# 遍历文件夹中的所有文件for filename in os.listdir(folder_path):if filename.endswith('.txt'):file_path = os.path.join(folder_path, filename)process_single_txt_file(file_path, output_folder)folder_path = 'D:\\study\\国庆干活\\new\\data_process\\量表统计_v2'  # 输入txt文件所在的文件夹路径
output_folder = 'D:\\study\\国庆干活\\new\\data_process\\量表统计_v2\\excel_output'  # 输出xlsx文件的文件夹路径process_all_txt_files_in_folder(folder_path, output_folder)

第二个python文件主要是实现表格数据的写入,人格雷达图的绘制,以及对应的属性分析内容。

import os
import unicodedata
import numpy as np
import pandas as pd
from docx import Document
from docx.enum.text import WD_PARAGRAPH_ALIGNMENT
from docx.shared import Pt, Inches
from docx.oxml.ns import qn# 创建文件夹(如果不存在)
output_dir = "D:/study/国庆干活/new/data_process/量表统计_v2/append"
os.makedirs(output_dir, exist_ok=True)# 读取Excel文件中的编号
PName = pd.read_excel('D:/study/国庆干活/new/data_process/量表统计_v2/Label.xlsx')
PName = PName.loc[:, '被试编号'].values
PName = list(PName)
id_list = list(set(PName))
id_list.sort(key=PName.index)# 计算字符串的视觉宽度
def get_display_width(s):width = 0for char in s:# 判断字符是全角还是半角字符if unicodedata.east_asian_width(char) in ['F', 'W']:width += 2else:width += 1return width# 定义一个期望任务名称和百分位数之间的总宽度(增加到 50)
desired_width = 50  # 原先为35,这里增加间距以扩大空格folder_path = "D:/study/国庆干活/new/data_process/量表统计_v2/excel_output"# 获取文件夹下所有的Excel文件
excel_files = [f for f in os.listdir(folder_path) if f.endswith('.xlsx')]# 存储所有文件“结果”列的数据的二维列表
results_2d_list = []
# 分别存储所有文件“参考数值”列的最小值和最大值
min_values_list = []
max_values_list = []
marks = []
# 遍历每个Excel文件并读取“结果”列
for file in excel_files:file_path = os.path.join(folder_path, file)# 读取Excel文件df = pd.read_excel(file_path)# 检查“结果”列是否存在if '结果' in df.columns:results_2d_list.append(df['结果'].tolist())# 将“结果”列的数据转化为列表,并作为二维列表中的一行添加else:print(f"文件 {file} 中没有找到 '结果' 列")# 检查“参考数值”列是否存在,并且有 22 个数据点if '参考数值' in df.columns and len(df['参考数值']) == 22:# 存储一个条目中22个“参考数值”的最小值和最大值min_values_for_file = []max_values_for_file = []# 遍历“参考数值”列中的每个范围,拆分成最小值和最大值for reference_value in df['参考数值']:try:min_value, max_value = reference_value.split('~')min_value = float(min_value.strip())  # 去掉空格并转换为浮点数max_value = float(max_value.strip())# 将最小值和最大值分别存储到对应的列表中min_values_for_file.append(min_value)  # 添加最小值到 min_values_for_filemax_values_for_file.append(max_value)  # 添加最大值到 max_values_for_fileexcept Exception as e:print(f"文件 {file} 中的 '参考数值' 列格式错误: {reference_value},错误: {e}")# 检查是否有22个数据点,确保符合要求if len(min_values_for_file) == 22 and len(max_values_for_file) == 22:min_values_list.append(min_values_for_file)max_values_list.append(max_values_for_file)else:print(f"文件 {file} 的 '参考数值' 列不满足22个数据点的要求")else:print(f"文件 {file} 中没有找到 '参考数值' 列或条目数不足 22")if '标识' in df.columns:marks.append(df['标识'].tolist())  # 将“结果”列的数据转化为列表,并作为二维列表中的一行添加else:print(f"文件 {file} 中没有找到 '标识' 列")
print(marks)
# 将二维列表转换为NumPy数组,形状为 (75, 22)
dfmin = np.array(min_values_list)
dfmax = np.array(max_values_list)# 将二维列表转换为 NumPy 数组,dtype=object 用于处理不同长度的行
percentile_array = np.array(results_2d_list, dtype=object)dfthreshold = np.array(marks)
tasks = ['视觉注意分配和视觉工作记忆的能力', '视觉注意力', '注意广度', '集中式空间注意能力', '分散式空间注意能力','复杂视觉注意力和复杂视觉处理能力', '快速视觉注意力和简单视觉处理能力', '定向听觉注意能力', '视觉记忆能力', '工作记忆能力', '空间认知能力', '语义联想与快速语言处理能力','视觉反应速度', '听觉反应速度', '决策速度', '决策效率', '创造力', '空间推理能力和逻辑思维能力', '执行功能','疼痛共情能力', '面部情绪识别能力', '情绪智力']task1 = ['视觉注意分配和视觉工作记忆的能力', '视觉注意力', '注意广度', '集中式空间注意能力', '分散式空间注意能力','复杂视觉注意力和复杂视觉处理能力', '快速视觉注意力和简单视觉处理能力', '定向听觉注意能力']
task2 = ['视觉记忆能力', '工作记忆能力', '空间认知能力', '语义联想与快速语言处理能力']
task3 = ['视觉反应速度', '听觉反应速度', '决策速度', '决策效率']
task4 = ['创造力', '空间推理能力和逻辑思维能力', '执行功能']
task5 = ['疼痛共情能力', '面部情绪识别能力', '情绪智力']task1_index = [0, 1, 2, 3, 4, 5, 6, 7]
task2_index = [8, 9, 10, 11]
task3_index = [12, 13, 14, 15]
task4_index = [16, 17, 18]
task5_index = [19, 20, 21]task_index = [{"注意力相关能力": [0, 1, 2, 3, 4, 5, 6, 7]},{"记忆和认知处理能力": [8, 9, 10, 11]},{"反应速度与决策能力": [12, 13, 14, 15]},{"思维与推理能力": [16, 17, 18]},{"情绪与社会认知能力": [19, 20, 21]}]
ps = [[#视觉注意分配和视觉工作记忆的能力'你在视觉注意分配和工作记忆方面表现较好。你在复杂的视觉场景中能够快速、准确地识别和聚焦关键细节,说明你具备很强的选择性注意能力。你不仅能够高效地分配注意资源,还能在短时间内记住多项视觉信息,这对于处理多任务、解决问题以及应对复杂环境中的决策很有帮助。这种能力意味着你在需要快速反应和保持大量视觉信息时能够保持良好的表现,特别是在处理具有多个目标或干扰物的任务时表现得比较出色。','你在视觉注意分配和工作记忆方面表现一般。在复杂的视觉场景中,你能够识别并关注关键细节,具备一定的选择性注意力和记忆能力。不过,有时可能在处理多任务或面对干扰时,集中注意和记住多项视觉信息会稍显困难。建议通过练习复杂度逐渐增加的任务、练习多任务处理的过程、运用视觉记忆技巧,及合理使用笔记、待办事项等外部工具帮助分配注意资源等来训练你的视觉注意力和工作记忆。'],[# 视觉注意力'你在视觉注意力方面表现较好。在复杂的视觉场景中,你能够比普通人更快、更准确地捕捉到关键信息,并有效忽略干扰。这种稍高的注意力水平让你能够更专注于重要的细节,无论是在处理视觉任务时还是在复杂环境中做出反应时都表现得非常出色。继续保持这种优势,它能够帮助你在需要精准视觉感知和快速反应的任务中取得更好的表现。','你在视觉注意力方面表现一般。在复杂的视觉场景中,你能够捕捉到一些关键信息,但可能在处理干扰信息时感到一些困难,导致反应速度和准确性有时不够理想。这可能影响你在需要快速反应和高集中度的任务中的表现。为了提升你的视觉注意力,可以尝试以下方法:首先,进行注意力训练,例如练习快速识别图像中的细节或参与一些专注力游戏,这些活动能帮助你提高对关键细节的捕捉能力。其次,尝试减少干扰,在处理视觉信息时,创造一个相对安静和不受干扰的环境,能够帮助你更好地集中注意力。此外,运用分段注意法,在面对复杂信息时,专注于一小部分,再逐渐扩展到整个场景,可以提高你的整体表现。'],[#注意广度'你在注意广度方面表现较好。在复杂环境中,你能够同时关注和处理多个信息源,快速识别和整合关键信息。这种能力让你在多任务处理时表现出色,能够灵活应对不同刺激而不易受到干扰。在需要快速反应和高效信息筛选的情境中,你能够迅速做出决策,从而提升工作和学习效率。你的出色表现表明你在视觉搜索和信息整合方面具有明显优势,这在快速变化的环境中尤其重要。','你在注意广度方面表现一般。在复杂环境中,你可能会发现自己在同时处理多个信息源时面临一定挑战,可能需要更多时间来识别和整合关键信息。这意味着在多任务处理时,可能会受到干扰,从而影响决策的速度和准确性。建议尝试一些训练方法以提升你的注意广度,比如参与需要同时关注多个任务的活动或练习,以提高信息处理的效率和灵活性。此外,定期休息和放松也能帮助你恢复注意力,避免疲劳对表现的影响。通过这些努力,你可以逐渐增强在复杂环境中的表现。'],[#集中式空间注意能力'你在集中式空间注意方面表现较好。在专注于特定空间区域时,你能够更加快速、准确地捕捉到关键信息,同时有效过滤掉周围的干扰。无论是在执行需要精确定位的任务,还是在复杂环境中专注于某一目标,你的表现都比一般人更为出色。这种能力让你在需要高度集中注意力的情境下能够表现得更敏捷和高效。继续保持这种优势,它将帮助你在处理视觉搜索或细致任务时取得更好的成绩。','你在集中式空间注意方面表现一般。在专注于特定空间区域时,你可能会遇到一些挑战,难以迅速和准确地捕捉到关键信息,同时可能会受到周围干扰的影响。这使得在需要精确定位的任务或在复杂环境中专注于某一目标时,你的表现可能受到限制。建议进行一些专注力训练以提升你的集中式空间注意能力,比如参与专注力游戏或练习冥想,这有助于提高你的注意力集中度。此外,设置一个相对安静的工作环境,减少外界干扰,也能帮助你更好地集中注意力。通过这些方法,你将能逐步提高在细致任务和视觉搜索中的表现。'],[#分散式空间注意能力'你在分散式空间注意方面表现较好。你能够在广阔的视觉场景中同时关注多个区域,并有效地监测并捕捉到不同空间内的关键信息。这种能力让你在处理需要广泛注意分配的任务中表现得比较出色,例如在复杂环境中保持对多重目标的敏锐反应。继续加强这种能力,它将在多任务处理和信息监控中为你带来更多优势。','你在分散式空间注意方面表现一般。在广阔的视觉场景中,你能够关注多个区域,但在同时监测和捕捉不同空间内的关键信息时,可能会面临一些挑战。这说明在处理需要广泛注意分配的任务时,可能需要更多的练习和提升。为了进一步发展这一能力,可以尝试参与一些需要同时关注多个目标的活动,比如特定的游戏或视觉观察练习。这将有助于提高你的反应速度和信息监控能力。'],[#复杂视觉注意力和复杂视觉处理能力'你在复杂视觉注意力和复杂视觉处理方面表现较好。在面对复杂的视觉环境时,你能够比大多数人更快地捕捉到多个关键信息点,并且在多个目标或动态场景中有效地分配注意力。这表明你在处理需要监控多个视觉对象或快速变化信息的任务时表现得比较出色。你具备较强的选择性注意能力,能够同时监测多个目标并保持高度专注,这为你在复杂、多任务情境中的表现提供了显著优势。继续保持这种能力,它将让你在需要复杂注意分配的任务中表现得更加从容和高效。','你在复杂视觉注意力和复杂视觉处理方面表现一般。在面对复杂的视觉环境时,你能够捕捉到一些关键信息点,但在同时监测多个目标或快速变化的场景中,可能会感觉有些挑战。这表明在处理需要监控多个视觉对象的任务时,你还有进一步提升的空间。为了增强这方面的能力,可以尝试进行一些视觉训练活动。这些活动有助于提高你在动态环境中的反应速度和信息处理能力。逐步增加任务的复杂性,将帮助你在多任务处理时表现得更加自如。'],[#快速视觉注意力和简单视觉处理能力'你在快速视觉注意力和简单视觉处理方面表现较好。你能够在短时间内迅速捕捉到关键的视觉信息,并对瞬间出现的刺激作出快速而准确的反应。这表明你在处理快速变化的视觉环境时表现得十分出色,无论是在需要即时决策的任务中,还是在快速识别和反应的情境下,你都展现出了较强的应对能力。你的快速注意力反应让你在面对动态、复杂的场景时具备显著优势,能够在短时间内有效处理多个刺激。继续保持这种表现,它将在日常生活或需要快速反应的任务中帮助你更加自如应对。','你在快速视觉注意力和简单视觉处理方面表现一般。在短时间内捕捉到关键视觉信息时,你能够做出一定反应,但在处理快速变化的视觉环境中可能会感到一些挑战。这表明你在需要即时决策或快速识别的任务时,还有进一步提升的空间。建议通过反应速度游戏或观察训练等一些针对性的训练,进一步提升你的瞬间刺激反应能力和信息处理速度,通过逐步练习,你会在动态、复杂的场景中变得更加灵活和自如。'],[  # 定向听觉注意能力'你在定向听觉注意方面表现较好。在复杂、嘈杂的环境中,你能够快速而精准地聚焦于重要的声音信息,同时有效地屏蔽掉周围的噪音或干扰。这表明你在需要专注于某个特定声源的任务中表现得比较出色,无论是在多人交谈的环境中,还是在复杂的声场中处理信息时,你都能保持高效的专注力。这种听觉专注能力为你在社交互动、工作任务和动态环境中提供了显著优势,继续发展这种能力,它将帮助你更加自如地应对各种复杂的听觉情境。','你在定向听觉注意方面表现一般。在复杂和嘈杂的环境中,你能够识别并关注重要的声音信息,但可能在屏蔽干扰方面面临一定挑战。这意味着在需要集中注意某个特定声源的任务中,你的表现可能会受到周围噪音的影响。为了提升这方面的能力,可以尝试进行一些听力训练,例如在嘈杂环境中练习专注于某一声源,或者参与听觉分辨率的练习。通过这些练习,你可以增强对重要声音的注意力,从而在社交互动和工作任务中表现得更加自如和高效。'],[  # 视觉记忆能力'你在视觉记忆方面表现较好。在面对复杂的视觉信息时,你能够快速有效地记住和提取重要细节。这说明你不仅能很好地保持短期内的视觉信息,还具备将这些信息有效地存储在长期记忆中的能力。这种能力有助于你在需要处理大量视觉信息的任务中表现卓越,尤其是在涉及视觉学习、物体识别和导航等活动中。你出色的视觉记忆能力能够让你在复杂任务中表现出色,并且能迅速从视觉记忆中提取关键信息进行决策。','你在视觉记忆方面表现一般。在处理简单的视觉信息时,你能够较好地记住关键细节,但在面对复杂或大量信息时,可能会感到有些挑战,尤其是在需要长时间保持这些信息时。这可能会影响你在涉及复杂视觉学习或多任务处理的情境中的表现。为了提升这一能力,可以使用分段记忆法,将复杂的视觉信息分成小部分进行记忆,以便更好地处理整体信息。此外,多参加需要记忆视觉细节的活动,以逐步增强记忆力。还可以通过视觉联想法,将视觉信息与熟悉的对象关联,帮助更快记忆和回忆信息。最后,定期进行重复回顾,有助于加深你的长时记忆,提升你在面对复杂任务时的表现。'],[  # 工作记忆能力'你在工作记忆上表现较好。你能够在处理复杂任务时有效地存储和操作多种信息,展现出卓越的记忆和信息处理能力。这种高效的工作记忆让你在需要多任务处理、解决问题或学习新知识时表现得比较出色。你能够在较短的时间内同时管理多个信息片段,并灵活应对任务需求的变化。这种认知优势为你在学术、工作和日常生活中的表现提供了坚实的基础。','你在工作记忆上表现一般。在处理复杂任务时,你能够存储和操作多种信息,但可能在信息管理和操作的灵活性上还有提升的空间。这表明在多任务处理、问题解决或学习新知识时,你的表现可能不会总是达到最佳状态。尽管你能在一定程度上管理多个信息片段,但在应对任务需求变化时,可能会感到一些挑战。建议你可以尝试使用记忆技巧或策略,比如分块法,来增强信息的处理效率。此外,适当的练习和训练将有助于提高你的工作记忆能力,从而在未来的学习和工作中表现得更加自信和有效。'],[  # 空间认知能力'你在空间认知方面表现较好。你在感知物体之间的空间关系、心智旋转以及路径规划方面表现出色,能够快速、准确地理解和操作三维空间信息。这种能力在解决涉及几何、导航、建筑设计等任务时,给予你显著的优势。无论是在日常生活中的空间判断,还是在专业领域中需要复杂空间操作的场景,你都能表现出较高的灵活性和准确性。继续发展这一能力,它将在科学、技术和工程等领域为你带来更多的成功机会。','你在空间认知方面表现一般。在理解物体之间的空间关系和进行心智旋转时,你具备一定的能力,但可能在复杂的三维空间任务中遇到挑战。这意味着在处理需要精确导航或空间规划的情境时,你可能需要更多时间来理解和操作这些信息。为了提升这一能力,可以尝试参与一些空间推理游戏或练习,例如拼图、迷宫或3D建模软件,这将帮助你提高空间想象力和处理能力。同时,注重在日常生活中多进行空间相关的思考,例如在行车时提前判断路线和停车位置,逐步增强你的空间认知能力。随着练习的增加,你将在处理空间任务时变得更加自信和高效。'],[  # 语义联想与快速语言处理能力'你在语义联想和快速语言处理上表现较好。你能够在极短的时间内迅速理解词汇和概念之间的联系,并灵活地运用这些联想进行推理、表达和决策。这使你在阅读、对话和复杂语言任务中表现得比较出色,能够快速理解信息并作出有效反应。无论是在高压环境中的沟通,还是在信息密集的情境中,你的语言处理效率都能帮助你高效地理解和应对各种任务。继续发挥这一优势,它将使你在语言相关的任务中具备显著的竞争力和表现优势。','你在语义联想和快速语言处理能力上表现一般。你能够在一定程度上迅速理解词汇和概念之间的联系,但在复杂语言任务中可能需要更多时间来组织和表达想法。这表明你在阅读、对话和信息处理时,有时可能会感到些许挑战。你能够理解信息,但在高压或信息密集的环境中,反应速度和效率可能会受到影响。建议你可以通过多进行语言练习和交流,增强你的语言反应能力和自信。同时,尝试使用一些策略,比如思维导图或关键词提取,来提高你的语言处理效率。这样的努力将有助于你在未来的语言相关任务中更加自如地应对挑战。'],[  # 视觉反应速度'你的视觉反应速度较快。当你面对视觉刺激时,你能够迅速、准确地作出反应,展现出高度的敏捷性和良好的协调能力。这意味着你在处理需要快速反应的任务中表现得比较出色,无论是在运动、驾驶还是需要快速决策的情境下,你都能比普通人更快地应对。这种视觉反应速度优势为你在日常生活和工作中的高效表现提供了坚实基础。继续发挥这一优势,它将在你未来的挑战中助你更加自信和敏捷地应对。','你在视觉反应速度上表现一般。在面对视觉刺激时,反应可能没有那么迅速,导致在需要快速反应的任务中稍显迟缓。这意味着在运动、驾驶或快速决策的情境下,你可能需要更多时间来作出反应。为了提升这一能力,可以通过参与一些反应速度训练游戏或应用,比如反应测试、打地鼠等,来练习快速识别和反应。此外,尝试进行一些简单的运动训练,帮助提高身体协调性和整体敏捷性。在日常生活中,留意观察周围环境并进行快速决策练习,随着时间的推移,你的反应速度有望得到改善,从而在需要迅速应对的场合中表现得更加自如。'],[  # 听觉反应速度'你的听觉反应速度较快。在听到声音刺激时,你能够迅速、精准地作出反应,展现出很强的敏捷性和快速处理能力。这表明你在需要依赖声音信号做出决策的情境中表现出色,无论是在运动、驾驶,还是在日常生活中的听觉任务中,你都能比普通人更快地应对。这种听觉反应速度的优势让你在面对紧急或复杂听觉情境时具备了显著的优势,继续保持这一特长,它将为你提供更多的灵活性和应变能力。','你在听觉反应速度上表现一般。在听到声音刺激时,你的反应可能没有那么迅速,可能导致在需要快速反应的任务中稍显迟缓。这意味着在依赖声音信号做出决策的情境下,可能需要更多时间来应对。为了提升这一能力,可以尝试进行一些听觉反应训练,比如反应游戏或听力测试,帮助提高对声音的敏感度和快速反应能力。同时,参与一些需要听觉快速识别的活动,如音乐游戏或声音辨识练习,也会有助于提高你的反应速度。随着练习的增加,你将能够在紧急或复杂的听觉情境中表现得更加灵活和高效。'],[  # 决策果断性'你的决策速度快于大多数人。在面对复杂或不确定的情境时,你能够迅速评估各种可能性并及时作出明确的决定,而不会陷入过多的犹豫或拖延。这表明你具备较强的自信心和决策速度,能够采取快速的行动。这种果断性让你在复杂的任务或紧急决策中表现得较为快速,为你在工作和生活中带来一定优势。但有时这种较快的决策习惯可能会使你对当前面临的问题缺乏足够的思考,需注意在保持决策速度的基础上也保证决策的准确性。','你的决策速度慢于大多数人。在面对复杂或不确定的情境时,你倾向于花更多时间进行评估和思考,仔细权衡各种可能性。这表明你在决策过程中重视准确性和全面性,能够深入分析问题的各个方面,减少冲动决策的风险。然而,这种谨慎的态度有时可能导致决策过程过于缓慢,使你在紧急情况下难以迅速采取行动。建议在保持全面思考的同时,适当练习快速决策。'],[  # 决策效率'你的决策效率较高。你能够迅速评估不同方案的潜在得分,并有效调整你的选择策略,以最大化得分。这显示了你在不确定性和随机性环境下的敏锐性和灵活性。你的快速学习能力让你能够迅速掌握任务规则,表现出良好的概率推理能力。同时,你在选择时能够有效抑制冲动,做出理智的决策。这种能力不仅在这个任务中为你赢得了优势,也将在日常生活和未来的挑战中为你提供强大的支持。继续保持这种决策效率,它将帮助你在更复杂的情境中更好地应对挑战。','你在决策效率上表现一般。你能够评估不同方案的潜在得分,但在调整选择策略以最大化得分方面可能还有提升空间。这表明在不确定性和随机性环境中,你的灵活性和敏锐性需要进一步加强。你在快速学习和掌握任务规则方面有一定能力,但在做出理智决策时,可能会受到一些冲动的影响。为提高决策效率,建议你可以尝试在选择时制定更加明确的标准,以便在复杂情境中做出更果断的判断。同时,多参与决策模拟和练习,将帮助你在未来的挑战中更加自信和高效。'],[  # 创造力'你在创造力方面表现较好。你能够提出许多新颖且有趣的想法,并在解决问题时展示出灵活的思维方式。你不仅能够从不同角度看待问题,还能找到实际有效的解决方案。你的创新性想法时常能够为任务带来新的视角,并且这些想法具有一定的实用价值。继续培养这种创造性思维,它将帮助你在不同的领域进一步提升表现。','你在创造力方面表现一般。在解决问题或任务时,你通常能够想到一些合适的方案,但可能缺少一些特别新颖或独特的视角。你有时可能会依赖于已有的经验和惯常的思维方式,而较少主动去探索创新性的解决方案。这在一些需要突破性思维的情境中,可能会限制你的表现。要提升创造力,你可以尝试打破常规思维,刻意在日常任务中探索不同的解决方法。此外,可以阅读不同领域的内容或学习新技能,有助于你从多种视角看待问题。参加头脑风暴或群体讨论也是一个有效途径,与他人交换意见可以帮助你从他人的思维模式中获得灵感。'],[  # 空间推理能力和逻辑思维能力'你在空间推理能力和逻辑思维方面表现较好。你不仅能够在复杂的三维环境中快速理解和操作物体,展示出卓越的心智旋转和空间关系判断能力,同时在推理和问题解决方面也表现得较为出色。你具备通过逻辑规则和因果关系来分析问题并推导出合理结论的能力,这使你在面对复杂的抽象问题时,能够有条理地进行分析和判断。无论是涉及空间结构的任务,还是需要严谨推理的情境,你都表现得较为出色。继续发挥这方面的优势,它们将在你未来的学术或职业发展中为你带来更多成功的机会。','你在空间推理能力和逻辑思维方面表现一般。在处理复杂的三维环境时,你能够理解和操作物体,但可能会在某些情况下遇到挑战。你在推理和问题解决方面具备一定的能力,能够应用基本的逻辑规则来分析问题,但在面对更复杂的抽象问题时,可能需要更多的时间进行思考。为了提升这些能力,可以尝试参与一些空间思维和逻辑推理的练习,例如解决拼图、参加逻辑谜题或者进行数学相关的训练。通过不断练习,你将能够更有效地增强心智旋转能力和逻辑推理水平,从而在未来的学习和工作中表现得更加自信和出色。'],[  # 执行功能'你在执行功能方面表现较好。在处理复杂任务时,你展现出了较强的抑制控制、工作记忆和认知灵活性。你能够在面对干扰时保持专注,同时有效管理和操作多项信息,表现出较高的认知控制能力。此外,你在任务之间的切换也非常灵活,能够快速适应新的规则或情境。这样的执行功能优势让你在需要多任务处理、计划和问题解决的情境中表现得较为出色。继续培养这种能力,它将帮助你在复杂决策和挑战性任务中更加自信和高效。','你在执行功能方面表现一般。在处理复杂任务时,你能够在一定程度上保持专注和管理信息,但可能会在应对干扰或多任务切换时遇到一些困难。这表明在认知控制和灵活性方面还有提升的空间。为了增强这一能力,可以尝试一些专注力和记忆力的训练,例如使用认知训练应用或参与多任务练习。通过定期练习,你可以提高抑制控制和信息处理的效率,从而在复杂决策和挑战性任务中表现得更加自如。逐步加强这些能力将有助于你更好地应对未来的挑战。'],[  # 疼痛共情能力'你的疼痛共情能力较高。当看到他人遭受痛苦时,你能够敏锐地感知到他们的痛苦,并迅速产生情感上的共鸣。这表明你不仅能够理解他人的痛苦,还能够在情感层面与他们产生深刻的联结。你的这种共情能力让你在面对他人困境时表现出更多的关怀和同理心,并能给予恰当的支持。这种敏锐的疼痛共情能力对你的人际关系和社交互动有极大帮助,继续发挥这一优势,它将在帮助他人时带来更多的力量与温暖。','你的疼痛共情能力一般。在观察他人遭受痛苦时,你能够感知到他们的痛苦,但可能在情感反应上稍显迟缓。这表明你对他人困境的理解有待提升,可能在表达关怀和支持时缺乏一些敏感性。为了增强这方面的能力,可以尝试主动关注他人的情绪和需求,参与一些与情感共鸣相关的活动,如志愿服务或情感沟通训练。通过这些实践,你可以更好地理解他人的痛苦,从而在需要时给予更有力的支持和同理心。'],[  # 面部情绪识别能力'你的面部情绪识别能力较高。在观察他人面部表情时,你能够迅速、准确地识别出他们的情感状态,这表明你在社交互动中具有更高的情感敏感度。无论是面对复杂的情绪表达,还是细微的表情变化,你都能比普通人更快地捕捉并理解其中的情感。这种能力让你在人际关系中能够更好地感知他人的情绪,并作出适当的回应,帮助你建立更加深厚的情感联结。继续发挥这一优势,它将在工作和社交场合中为你带来更好的沟通和理解。','你的面部情绪识别能力一般。在观察他人面部表情时,你能够识别一些情感状态,但可能在处理复杂或细微的情绪表达时稍显困难。这表明你在社交互动中对情感的敏感度还有提升空间。为了提高这方面的能力,可以尝试多参与社交活动,主动观察他人的表情和情绪反应,或者进行相关的培训和练习。此外,可以通过观看影视作品或阅读情感相关的书籍,来增强对不同情感表达的理解和识别。随着这些技能的提升,你将在与他人的沟通中更加自如,并能建立更深厚的情感联结。'],[  # 情绪智力'你在情绪智力方面表现较好。你能够敏锐地觉察并理解自己的情绪,在复杂情境中有效地管理和调节情绪反应。这表明你在面对压力或挑战时,能够保持冷静并灵活应对。此外,你在与他人互动时,展现出强大的情感感知能力,能够迅速理解他人的情绪状态,并通过恰当的方式回应。你的这种情绪智力优势让你在人际交往、冲突解决以及团队合作中表现得比较突出。继续发展这一能力,它将在你的人际关系和职业发展中为你带来更大的成功。','你在情绪智力方面表现一般。你在识别和理解自己情绪方面有一定的能力,但在复杂情境中进行情绪管理和调节反应时可能会遇到一些挑战。这表明你在应对压力或困难时可能需要更多的策略来帮助自己保持冷静和灵活。为了提升这方面的能力,可以尝试进行情绪日记记录,帮助自己更好地识别和反思情绪变化。此外,参与相关的工作坊或阅读关于情绪智力的书籍,可以帮助你学习更有效的情绪管理和应对技巧。随着这些能力的提升,你将在与他人的互动中更自如地理解和回应情绪,从而改善人际关系和团队合作。']
]
def add_paragraph_with_font(doc, text, font_name = '宋体', font_size = 11, bold = False):# 添加段落paragraph = doc.add_paragraph()run = paragraph.add_run(text)# 设置字体名称run.font.name = font_name# # 遍历文档中的所有段落for para in doc.paragraphs:# 遍历每个段落中的 "runs"(即一段文本中字体、样式一致的部分)for run in para.runs:if '~' in run.text:# 检查是否是数字间的 ~text_split = run.text.split('~')run.text = run.text.replace('~', '~')# 设置符合XML规范的字体名称,确保不乱码r = run._elementr.rPr.rFonts.set(qn('w:eastAsia'), font_name)# 设置字体大小run.font.size = Pt(font_size)run.bold = bold
# 写入任务信息函数
def write_task_info(doc, task_list, task_indices, i, title):p = doc.add_paragraph(title)run = p.runs[0]run.font.name = '宋体'run._element.rPr.rFonts.set(qn('w:eastAsia'), '宋体')run.font.size = Pt(9)for j, task in enumerate(task_list):task_width = get_display_width(task)space_needed = desired_width - task_width - 4   # 增加额外的空格以扩大间隔percentile_value = percentile_array[i, task_indices[j]]if dfthreshold[i][task_indices[j]] == '+':rating = '+'else:rating = ' 'print(f"{i, j, task, task_indices[j], percentile_value, dfthreshold[i][task_indices[j]]}+++++")# 使用英文 `~` 替换中文 `~`range_text = f"{dfmin[i][task_indices[j]]:.2f}{dfmax[i][task_indices[j]]:.2f}"# 写入内容line = f"{task}{' ' * space_needed}{percentile_value:.2f}        {range_text}        {rating}"p = doc.add_paragraph(line)run = p.runs[0]run.font.name = '宋体'run._element.rPr.rFonts.set(qn('w:eastAsia'), '宋体')run.font.size = Pt(9)p.paragraph_format.space_after = Pt(1)  # 调整行间距p = doc.add_paragraph("------------------------------------------------------------------------------")p.paragraph_format.space_after = Pt(1)  # 调整行间距run = p.runs[0]run.font.name = '宋体'run._element.rPr.rFonts.set(qn('w:eastAsia'), '宋体')# 遍历每个编号,生成对应的 docx 文件
for i, report_id in enumerate(id_list):doc = Document()title = doc.add_paragraph(f"编号:{report_id}")run = title.runs[0]run.font.name = '宋体'run._element.rPr.rFonts.set(qn('w:eastAsia'), '宋体')run.font.size = Pt(10)p = doc.add_paragraph("报告内容:认知维度报告")run = p.runs[0]run.font.name = '宋体'run._element.rPr.rFonts.set(qn('w:eastAsia'), '宋体')run.font.size = Pt(9)p = doc.add_paragraph("------------------------------------------------------------------------------")p.paragraph_format.space_after = Pt(1)  # 调整行间距run = p.runs[0]run.font.name = '宋体'run._element.rPr.rFonts.set(qn('w:eastAsia'), '宋体')header = f"{'任务名称'}{' ' * (desired_width - get_display_width('任务') - 8)}结果         参考数值           标识"p = doc.add_paragraph(header)p.paragraph_format.space_after = Pt(1)  # 调整行间距run = p.runs[0]run.font.name = '宋体'run._element.rPr.rFonts.set(qn('w:eastAsia'), '宋体')run.font.size = Pt(9)p = doc.add_paragraph("------------------------------------------------------------------------------")p.paragraph_format.space_after = Pt(1)  # 调整行间距run = p.runs[0]run.font.name = '宋体'run._element.rPr.rFonts.set(qn('w:eastAsia'), '宋体')# 调用函数写入各部分任务信息write_task_info(doc, task1, task1_index, i, "1、注意力相关能力:")write_task_info(doc, task2, task2_index, i, "2、记忆和认知处理能力:")write_task_info(doc, task3, task3_index, i, "3、反应速度与决策能力:")write_task_info(doc, task4, task4_index, i, "4、思维与推理能力:")write_task_info(doc, task5, task5_index, i, "5、情绪与社会认知能力:")p = doc.add_paragraph("注:+ 代表您在这方面的能力较好")run = p.runs[0]run.font.name = '宋体'run._element.rPr.rFonts.set(qn('w:eastAsia'), '宋体')run.font.size = Pt(9)# 插入图片并居中image_path = f"D:/study/国庆干活/new/data_process/综合能力/pic/png/{report_id}.png"  try:p = doc.add_paragraph()run = p.add_run()run.add_picture(image_path, width=Inches(4))  # 插入图片并设置宽度p.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER  # 将段落居中except Exception as e:print(f"无法插入图片,错误信息: {e}")for task in task_index:  # 遍历每一个字典for j in task.values():signs = []for k in j:signs.append(marks[i][k])  # l用来存放每一类的标识if "+" in signs:add_paragraph_with_font(doc, task.keys(), "宋体", 11, True)  # 写标题for j in task.values():for k in j:if marks[i][k] == '+':print(marks[i][k])add_paragraph_with_font(doc, ps[k][0], "宋体", 11, False)else:print(" ")# 保存为 Word 文档filename = os.path.join(output_dir, f"{report_id}.docx")doc.save(filename)
print("所有报告已成功生成并保存到Word文档中!")

总体来说,对python的读写操作更熟悉了。其中对字典的运用还是存在不足,下来还得多加强练习。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com