You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中如何按文件名日期匹配处理xml、txt文件并按日期分组输出

问题根因

你的代码当前存在两个核心问题:

  • xml_dates存在重复日期,嵌套循环会重复处理同一个日期的txt文件,产生冗余计算
  • 所有符合条件的行都直接追加到to_csv全局列表,没有按日期做分组封装
修正方案

调整循环逻辑,先对xml日期去重,每个日期单独创建临时列表存储数据,处理完成后再放入全局列表即可。
修改后的完整代码如下:

import os
import re
import csv

output_xml = r"c:\desktop\energy\XML_Output"
output_txt = r"c:\desktop\energy\TXT_Output"

xml_name = os.listdir(output_xml)
txt_name = os.listdir(output_txt)
txt_name = [x.replace('-', '') for x in txt_name] # 去掉文件名中的横杠

# 提取xml和txt文件的日期
xml_dates = []
for file in xml_name:
    find = re.search("_(.\d+)-", file).group(1)
    xml_dates.append(find)

txt_dates = []
for file in txt_name:
    find = re.search("MM(.+?)AB", file).group(1)
    txt_dates.append(find)

# 对xml日期去重,避免重复处理同一日期
unique_xml_dates = list(set(xml_dates))
to_csv = []

# 只遍历去重后的日期
for date_xml in unique_xml_dates:
    if date_xml not in txt_dates:
        continue
    # 匹配对应txt和xml文件
    match_txt = [s for s in txt_name if date_xml in s]
    match_xml = [s for s in xml_name if date_xml in s]
    # 还原txt文件名格式
    match_txt_temp = match_txt[0]
    match_txt_score = match_txt_temp[:6]+'-'+match_txt_temp[6:8]+'-'+match_txt_temp[8:10]+'-'+match_txt_temp[10:12]+match_txt_temp[12:]
    # 创建当前日期的临时存储列表
    current_date_rows = []
    with open(os.path.join(output_txt, match_txt_score), "r") as outer:
        reader = csv.reader(outer, delimiter="\t")
        for row in reader:
            if not row:
                continue
            # csv读取的内容为字符串,需转数字后再比较大小
            energy_level = int(row[20])
            if energy_level > 250:
                current_date_rows.append(row)
    # 把当前日期的所有行加入全局列表
    if current_date_rows:
        to_csv.append(current_date_rows)

print(to_csv)
补充说明
  • 新增unique_xml_dates对xml日期去重,避免同一个日期被多次重复处理
  • 每个日期处理时创建current_date_rows临时列表存储该日期所有符合条件的行,处理完成后再追加到to_csv,实现按日期分组的效果
  • 修复了原代码中重复遍历reader会跳过首行、字符串直接和数字比较的逻辑错误
  • 用os.path.join拼接路径,避免不同系统的路径分隔符兼容问题
  • 优化了冗余的嵌套循环逻辑,运行效率更高

内容的提问来源于stack exchange,提问作者ManCity10

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 05:27:03