基于日期合并多文本文件的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
相关产品推荐
相关产品推荐

