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

基于日期合并多文本文件的Python实现问题求助

基于日期合并多文本文件的Python实现问题求助

大家好!我最近在尝试用Python把多个文本文件按日期合并成一个文件,但遇到了一些卡壳的地方,想请大家帮忙看看。

先说说我的需求:

  • 目标文件夹里有若干个文本文件(数量不固定,3个及以上)
  • 每个文件里都是以DATES开头的日期块,每个块包含一个日期和对应的数据内容
  • 我需要把所有文件的内容合并到一起,相同日期下的内容要放在同一个日期块里,并且所有日期块要按照时间先后顺序排列

给大家举个具体的例子:

示例输入文件

file_1.txt

DATES

1 JAN 2023 /

/

FILE_1 text1

12345

DATES

1 OCT 2027 /

/

FILE_1 text2

87944

file_2.txt

DATES

1 MAR 2024 /

/

FILE_2 text1

9999

DATES

1 JAN 2026 /

/

FILE_2 text2

4578

file_3.txt

DATES

1 JAN 2023 /

/

FILE_3 text1

8888

DATES

1 DEC 2030 /

/

FILE_3 text2

aaaaa

期望的合并结果

DATES

1 JAN 2023 /

/

FILE_1 text1

12345

FILE_3 text1

8888

DATES

1 MAR 2024 /

/

FILE_2 text1

9999

DATES

1 JAN 2026 /

/

FILE_2 text2

4578

DATES

1 OCT 2027 /

/

FILE_1 text2

87944

DATES

1 DEC 2030 /

/

FILE_3 text2

aaaaa

我自己尝试用字典来实现这个逻辑:把主文件(比如file_1.txt)和输入文件夹里的其他文件都解析成字典,用日期作为键,对应的数据内容作为值。但现在卡在了合并字典的步骤——当不同文件有相同的日期键时,我不知道怎么把对应的数据内容合并到一起。而且我怀疑是不是自己把问题想复杂了,可能有更简单的实现方式?

下面是我目前写的代码,麻烦大家帮忙看看哪里可以改进:

import os
import re

main = "main_file.data"
input_folder = "input_files_folder/"
output_path = "output.txt"

output = open(output_path, "w")
inputs = []

for file in os.listdir(input_folder):
    inputs.append(os.path.join(input_folder, file))

list_of_words = ["JAN", "FEB", "MAR", "APR", "MAY", "JUN", "JUL", "AUG", "SEP", "OCT", "NOV", "DEC"]
list_of_words_DATES = ["JAN", "FEB", "MAR", "APR", "MAY", "JUN", "JUL", "AUG", "SEP", "OCT", "NOV", "DEC"]

list_to_add = []
my_dict = {}
string = ""
list_of_dates = []
number_of_files = 1

for idx, fname in enumerate(inputs):
    flag = 0
    flag_DATES = 0
    flag_content = 0
    list_to_add = []
    my_dict[str(idx)] = {}
    with open(fname) as f:
        lines2 = [line.strip() for line in f]
        for line in lines2:
            new = re.split(r"\s+", line)
            if len(new) > 1 and new[1] in list_of_words:
                flag = 1
                string = str(int(new[0])) + " " + str(new[1]) + " "  + str(new[2])
                list_to_add = []
                list_of_dates.append(string)
            else:
                flag = 0
                list_to_add.append(new)
            if len(string) >1:
                my_dict[str(idx)][string] = list_to_add

备注:内容来源于stack exchange,提问作者Al_Pacino

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.22 15:04:52