python数据清洗-找到重复的txt并输出字数最少的


import os
import json
from collections import Counter

def find_and_write_duplicate_txt_files(root_folder, output_file):
    # 存储所有找到的 txt 文件名和路径的字典列表
    txt_files_dict_list = []

    # 统计每个文件名出现的次数
    filename_counts = Counter()

    # 遍历文件夹及其子文件夹
    for foldername, _, filenames in os.walk(root_folder):
        for filename in filenames:
            # 只处理 txt 文件
            if filename.endswith('.txt'):
                # 记录文件名出现的次数
                filename_counts[filename] += 1
    list1=[]
    # 遍历文件夹及其子文件夹
    for foldername, _, filenames in os.walk(root_folder):
        for filename in filenames:
            # 只处理 txt 文件
            if filename.endswith('.txt'):
                # 如果文件名出现次数大于等于2,则记录其路径
                if filename_counts[filename] >= 2:
                    # 构建 txt 文件的路径
                    txt_filepath = os.path.join(foldername, filename)

                    # 将文件名和路径存储在字典中
                    txt_files_dict = {'filepath': txt_filepath, 'filename': filename}

                    # 将字典添加到列表中
                    txt_files_dict_list.append(txt_files_dict)
                    if filename not in list1:
                        list1.append(filename)
    print(len(list1),list1)

    # 将字典列表写入 JSONL 文件
    with open(output_file, 'w', encoding='utf-8') as f_out:
        for txt_file_dict in txt_files_dict_list:
            json.dump(txt_file_dict, f_out, ensure_ascii=False)
            f_out.write('\n')



# 调用函数遍历文件夹并将结果写入 JSONL 文件
find_and_write_duplicate_txt_files('D:\\2024work\\5月小说', '重复的txt.jsonl')




import json

def process_output_file(input_file, output_file):
    # 读取 'output.jsonl' 文件
    file_data = []
    with open(input_file, 'r', encoding='utf-8') as f_in:
        for line in f_in:
            file_data.append(json.loads(line))

    # 找到每个文件名对应的最大字数的文件
    filename_to_data = {}
    for data in file_data:
        filename = data['filename']
        filepath = data['filepath']
        with open(filepath, 'r', encoding='utf-8') as f:
            content = f.read()
            file_size = len(content)

        if filename not in filename_to_data or file_size > filename_to_data[filename]['file_size']:
            filename_to_data[filename] = {'filepath': filepath, 'file_size': file_size}

    # 将数据写入新的 JSONL 文件
    with open(output_file, 'w', encoding='utf-8') as f_out:
        for filename, data in filename_to_data.items():
            json.dump({'filename': filename, 'filepath': data['filepath']}, f_out, ensure_ascii=False)
            f_out.write('\n')

# 调用函数处理 'output.jsonl' 文件并将结果写入新的 JSONL 文件
process_output_file('重复的txt.jsonl', '重复的txt_output.jsonl')

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值