506874511 发表于 2021-10-4 09:20

python 去重怎么处理!

本帖最后由 506874511 于 2021-10-4 09:23 编辑

以下代码是https://www.52pojie.cn/forum.php ... %C8%A5%D6%D8&page=1这个帖子的。

1.txt 里面的是123 456 789
2.txt 里面的是123 456 789 455 456

我怎么执行下面代码导出的新txt文件只有 455 456 这两个值。

我好像自己解决了。
str_all = set(str1 + str2)# 将两个文件放到集合里,过滤掉重复内容
改成
str_all = set(str2)# 将两个文件放到集合里,过滤掉重复内容
好像这样就可以了
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import time

a = time.time()
print("开始检测,请耐心等待,文件较大需要时间越长,完毕本界面会跳出提示")


def file_qc():
    str1 = []
    file_1 = open("d:/1.txt", "r", encoding="utf-8")
    for line in file_1.readlines():
      str1.append(line.replace("\n", ""))

    str2 = []
    file_2 = open("d:/2.txt", "r", encoding="utf-8")
    for line in file_2.readlines():
      str2.append(line.replace("\n", ""))

    str_dump = []
    for line in str1:
      if line in str2:
            str_dump.append(line)# 将两个文件重复的内容取出来

    str_all = set(str1 + str2)# 将两个文件放到集合里,过滤掉重复内容

    for i in str_dump:
      if i in str_all:

            str_all.remove(i)# 去掉重复的文件
    print("正在写去重后的结果,请稍等")
    for str in str_all:# 去重后的结果写入文件
      with open("d:/去重后.txt", "a+", encoding="utf-8") as f:
            f.write(str + "\n")


if __name__ == "__main__":
    file_qc()
print('耗时(秒):%f' % (time.time() - a))
print("10秒后自动关闭该界面,你也可以现在手动关闭")
time.sleep(10)

Xingyemao 发表于 2021-10-4 10:31

本帖最后由 Xingyemao 于 2021-10-4 10:33 编辑

def file_qc():
    str1 = []
    file_1 = open("d:/1.txt", "r", encoding="utf-8")
    for line in file_1.readlines():
      str1.append(line.replace("\n", ""))

    file_2 = open("d:/2.txt", "r", encoding="utf-8")
    for line in file_2.readlines():
      if line not in str1:
                str1.append(line.replace("\n", ""))

请问,这样写的话,是不是也能实现?

beiying 发表于 2021-10-4 11:02

写规范点呗,就这样

#!/usr/bin/env python
# -*- coding:utf-8 -*-
import time


def ReadFile(file_path):
    with open(file_path, 'r', encoding='utf-8') as file_object:
      return


def SaveFile(file_path, str_list):
    with open(file_path, "a+", encoding='utf-8') as file_object:
      file_object.writelines()


def TextDeDuplication(file_path_1, file_path_2, save_path):
    SaveFile(save_path, set(ReadFile(file_path_1) + ReadFile(file_path_2)))


if __name__ == "__main__":
    start_time = time.time()
    print('开始检测,请耐心等待,文件较大需要时间越长,完毕本界面会跳出提示')
    print('正在写去重后的结果,请稍等')
    TextDeDuplication('1.txt', '2.txt', '3.txt')
    print(f'耗时(秒):{time.time() - start_time}')
    print('10秒后自动关闭该界面,你也可以现在手动关闭')
    time.sleep(10)

salge 发表于 2021-10-4 11:04

页: [1]
查看完整版本: python 去重怎么处理!