吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 254|回复: 5
收起左侧

[经验求助] 求2个大文本去重复数据算法

[复制链接]
waweiggfnh 发表于 2024-9-17 11:24
30吾爱币
本帖最后由 waweiggfnh 于 2024-9-17 11:29 编辑

因测试两个库的值是否相同,相同的排除,不相同的保留,附件是2个TXT文档,A是10万条,B是11万条;
要求:1、Python或者易语言算法
2、AB文档去掉重复部分,保留不重复的;
3、分别生成2个新文件,内容分别为AB文档剩余不重复的数据
因附件文档超过1MB,上传到蓝奏云
附件地址:https://www.ilanzou.com/s/hZGylGKb

最佳答案

查看完整内容

[mw_shl_code=python,true] with open('生成文本A.txt', 'r') as f: A = f.readlines() with open('生成文本B.txt', 'r') as f: B = f.readlines() # 使用集合找出重复的元素 A_set = set(A) B_set = set(B) duplicates = A_set.intersection(B_set) with open('重复值.txt', 'w') as f: f.write(''.join(duplicates)) # 打印重复值 print("重复值:", duplicates) # 去除重复值 A_no_duplicates = list ...

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

hebeijianke 发表于 2024-9-17 11:24
[Python] 纯文本查看 复制代码
with open('生成文本A.txt', 'r') as f:
    A = f.readlines()
with open('生成文本B.txt', 'r') as f:
    B = f.readlines()
# 使用集合找出重复的元素
A_set = set(A)
B_set = set(B)
duplicates = A_set.intersection(B_set)
with open('重复值.txt', 'w') as f:
    f.write(''.join(duplicates))
# 打印重复值
print("重复值:", duplicates)
# 去除重复值
A_no_duplicates = list(A_set - B_set)
B_no_duplicates = list(B_set - A_set)
with open('去掉重复值后的A.txt', 'w') as f:
    f.write(''.join(A_no_duplicates))
with open('去掉重复值后的B.txt', 'w') as f:
    f.write(''.join(B_no_duplicates))
# 打印去除重复值后的A和B数据
print("去掉重复值后的A数据:", A_no_duplicates)
print("去掉重复值后的B数据:", B_no_duplicates)
gchq2005 发表于 2024-9-17 13:10
要是算法不难,读取两个文件到内存数组,再比较,相同就两个值0,比较完,再两数组写入文件,0值的跳过,就达到要求了
 楼主| waweiggfnh 发表于 2024-9-17 21:14
gchq2005 发表于 2024-9-17 13:10
要是算法不难,读取两个文件到内存数组,再比较,相同就两个值0,比较完,再两数组写入文件,0值的跳过,就 ...

能否写个内存数组的例子?
hebeijianke 发表于 2024-9-18 08:11
你这在Excel里面比较更好啊
gu1001 发表于 2024-9-18 10:54
由于我无法直接处理文件,我可以提供一段Python代码示例,你可以在自己的环境中运行它来完成这个任务。

以下是一个Python脚本,它将比较两个文本文件的内容,去除重复的部分,并分别将不重复的数据保存到两个新文件中:

```python
def remove_duplicates_and_save(input_file_a, input_file_b, output_file_a, output_file_b):
    with open(input_file_a, 'r') as file_a, open(input_file_b, 'r') as file_b:
        # 读取文件内容并转换为集合去重
        set_a = set(file_a.readlines())
        set_b = set(file_b.readlines())

        # 找出不重复的数据
        unique_to_a = set_a - set_b
        unique_to_b = set_b - set_a

        # 写入不重复的数据到新文件
        with open(output_file_a, 'w') as out_a, open(output_file_b, 'w') as out_b:
            out_a.writelines(unique_to_a)
            out_b.writelines(unique_to_b)

# 调用函数,传入文件路径
remove_duplicates_and_save('path_to_file_a.txt', 'path_to_file_b.txt', 'output_file_a.txt', 'output_file_b.txt')
```

请将 `'path_to_file_a.txt'` 和 `'path_to_file_b.txt'` 替换为你的输入文件的实际路径,`'output_file_a.txt'` 和 `'output_file_b.txt'` 是你希望创建的输出文件的名称。

在运行这段代码之前,请确保你的Python环境已经安装,并且你的文本文件是编码为UTF-8(或其他你的Python环境支持的编码)的纯文本文件。

这段代码的工作原理是:
1. 读取两个文件的内容,并将它们转换为集合(自动去重)。
2. 使用集合的差集操作找出两个集合中不重叠的部分。
3. 将这些不重叠的部分写入到新的文件中。


您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-12-12 21:55

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表