在数据处理中,我们经常需要从非结构化或半结构化的文本文件中提取有用的信息,并进行相应的计算。本节将以一个常见的场景为例,演示如何利用python有效地解析包含文本标签和数值列表的文本文件,并对其中的数值进行求和。
假设我们有一个名为 TB1.txt 的文本文件,其内容格式如下:
Monday: 12,34,-90 Saturday: 32,-23,20
我们的目标是读取这个文件,并分别计算“Monday”和“Saturday”对应的数值总和。挑战在于每一行数据都包含了文本标签(如“Monday”),以及由逗号分隔的数值字符串。
要解决这个问题,我们需要采取以下几个关键步骤:
以下是实现上述逻辑的Python代码:
立即学习“Python免费学习笔记(深入)”;
def calculate_daily_sums(file_path): """ 从指定文本文件中读取数据,计算每天对应的数值总和。 Args: file_path (str): 文本文件的路径。 Returns: dict: 一个字典,键为日期标签,值为对应的数值总和。 """ daily_sums = {} try: # 使用 with 语句安全地打开文件,确保文件自动关闭 with open(file_path, 'r', encoding='utf-8') as file: # 逐行读取文件内容 for line in file: # 移除行尾的空白字符,特别是换行符 line = line.strip() if not line: # 跳过空行 continue # 1. 根据冒号分割标签和数值部分 # 例如:"Monday: 12,34,-90" -> ["Monday", " 12,34,-90"] if ':' in line: label, fields_str = line.split(':', 1) # 只分割一次 label = label.strip() # 清除标签两边的空白 # 2. 根据逗号分割数值字符串 # 例如:" 12,34,-90" -> [" 12", "34", "-90"] values_str_list = fields_str.split(',') current_sum = 0 # 3. 遍历数值字符串列表,转换为整数并累加 for v_str in values_str_list: try: # 转换前清除可能存在的空白字符 value = int(v_str.strip()) current_sum += value except ValueError: print(f"警告: 无法将 '{v_str.strip()}' 转换为整数,已跳过。") continue daily_sums[label] = current_sum print(f"{label}: {current_sum}") else: print(f"警告: 行 '{line}' 格式不符合 '标签: 值1,值2...',已跳过。") except FileNotFoundError: print(f"错误: 文件 '{file_path}' 未找到。请检查文件路径。") except Exception as e: print(f"处理文件时发生未知错误: {e}") return daily_sums # 假设 TB1.txt 文件已存在于脚本同目录下 file_name = 'TB1.txt' # 创建一个示例文件用于测试 with open(file_name, 'w', encoding='utf-8') as f: f.write("Monday: 12,34,-90\n") f.write("Saturday: 32,-23,20\n") f.write("Sunday: 100,50\n") f.write("InvalidLine\n") # 添加一个无效格式的行 f.write("EmptyLine:\n") # 添加一个数值部分为空的行 f.write("MixedData: 10,abc,20\n") # 添加一个包含非数字的行 # 调用函数进行计算 results = calculate_daily_sums(file_name) print("\n所有计算结果:") print(results)
with open(file_path, 'r', encoding='utf-8') as file:
for line in file:
line.strip()
line.split(':', 1)
int(v_str.strip())
错误处理 (try-except)
数据结构选择
通过上述步骤和示例代码,我们展示了如何有效地从结构化文本文件中提取、转换并计算数值。关键在于熟练运用Python的文件I/O操作、字符串处理方法(如 split() 和 strip())以及数据类型转换。同时,良好的错误处理机制能够大大增强程序的鲁棒性,使其在面对不规范数据时也能稳定运行。掌握这些技能对于日常的数据处理任务至关重要。
以上就是从文本文件中提取并计算数值:Python实践指南的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 //m.sbmmt.com/ All Rights Reserved | php.cn | 湘ICP备2023035733号