如何用Python按Age值分割TXT文件并分组输出?
用Python按Age分组分割TXT文件的实现方法
核心思路
- 读取目标TXT文件的全部内容
- 分离出表头和数据行
- 以Age字段为依据,将数据行归类到不同分组
- 给每个分组添加表头,最后输出结果(可打印或写入新文件)
完整代码示例
# 读取输入文件内容 with open('input.txt', 'r') as f: # 过滤空行并去除每行首尾的空白字符 lines = [line.strip() for line in f if line.strip()] if not lines: print("文件为空或没有有效内容") exit() # 提取表头和数据行 header = lines[0] data_rows = lines[1:] # 按Age值分组存储数据 age_groups = {} for row in data_rows: # 按空格分割每行内容,得到各个字段 parts = row.split() # 确保该行有足够的字段(至少包含Age) if len(parts) >= 2: age = parts[1] # 如果该Age还没有分组,创建新列表 if age not in age_groups: age_groups[age] = [] age_groups[age].append(row) # 生成带表头的分组结果 result = [] # 按Age从小到大排序输出 for age in sorted(age_groups.keys()): result.append(header) result.extend(age_groups[age]) result.append("") # 分组之间用空行分隔 # 打印最终结果 print('\n'.join(result)) # 可选:将每个分组写入单独的文件 for age, rows in age_groups.items(): with open(f'age_{age}_group.txt', 'w') as output_file: output_file.write(header + '\n') output_file.write('\n'.join(rows))
代码分步解释
- 文件读取:使用
with open语句可以自动关闭文件,避免资源泄漏;同时过滤掉空行,只保留有效内容。 - 表头与数据分离:第一行是表头,后续所有行都是需要分组的数据。
- 分组逻辑:用字典
age_groups来存储分组,键是Age的数值,值是对应的数据行列表,遍历所有数据行时将它们归入对应的分组。 - 结果生成:遍历每个分组,先写入表头,再写入对应的数据行,分组之间添加空行分隔,让结果更清晰。
- 文件输出(可选):如果需要将每个分组保存为单独的文件,循环遍历字典,为每个Age创建一个新文件并写入内容。
新手注意事项
- 确保你的输入文件
input.txt和Python脚本在同一个文件夹下,或者修改代码中的文件路径为完整路径(比如C:/data/input.txt)。 - 如果你的文件是用逗号分隔的CSV格式,需要把
row.split()改成row.split(','),并且注意处理字段前后的空格。 - 代码中加入了简单的校验(检查每行是否有足够字段),避免因文件格式错误导致程序崩溃。
内容的提问来源于stack exchange,提问作者wrangler
相关产品推荐
相关产品推荐

