鱼C论坛

 找回密码
 立即注册
查看: 6451|回复: 31

[已解决]txt文件中删除重复项的问题 求助

[复制链接]
发表于 2022-8-9 10:25:19 | 显示全部楼层    本楼为最佳答案   
我不太确定代码是不是百分百正确,我人工查看了几个,应该是对的
我把去重后的文本放到了新的文件叫B.txt
  1. import re
  2. with open('C.txt', 'r', encoding='utf-8') as f:
  3.   data = f.readlines()
  4. new_data = []
  5. for item in data:
  6.   item = item.strip()
  7.   sorted_item = sorted(re.sub(r'[\{|\}]', '', item).split(','))
  8.   new_data.append(','.join(sorted_item))
  9. for index, item in enumerate(new_data):
  10.   if item in new_data[0:index] or item in new_data[index+1:]:
  11.     data[index] = '{}\n'
  12.     new_data[index] = ''
  13. with open('B.txt', 'w', encoding='utf-8') as f:
  14.   f.writelines(data)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2022-8-9 16:34:50 | 显示全部楼层
人造人 发表于 2022-8-9 15:14
会多出空括号 "{}"

az,空括号不是他要求的吗
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2022-8-9 16:36:36 | 显示全部楼层
Amgalang 发表于 2022-8-9 15:22
谢谢您的回复,解决了这个问题呢,真的很感谢。

不过发现两个需要优化的问题呢:

好吧,我再来想想
问一个问题,删除重复的元素要删哪一个?第一个还是最后一个,还是都删
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2022-8-9 16:48:05 | 显示全部楼层
Amgalang 发表于 2022-8-9 16:46
删除一个集合内重复元素时,删除一个集合内靠后的重复元素,例如:

{A,B,C,A,C}

好吧,问题1反而是最简单的
我来看看
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2022-8-9 17:05:21 | 显示全部楼层
Amgalang 发表于 2022-8-9 17:02
哈哈哈 好吧
我刚写了个新手的代码,共参考,但 内容多后,代码一直跑,仅供参考:
>>> e = """

我问一下, {A, B=C, B=D}这种,输出应该是什么?
是{A, B=C},还是不修改?
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2022-8-9 17:30:27 | 显示全部楼层
Amgalang 发表于 2022-8-9 17:24
这种输出不改。{A, B=C, B=D}正确呢。

我刚找了一下,好像没有你说的元素重复的情况
最像的是这种{A, B=C, C=B},这个要不要改呢?
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2022-8-9 17:36:21 | 显示全部楼层
Amgalang 发表于 2022-8-9 17:32
那太好啦,我就是怀疑有元素重复,{A, B=C, C=B}这种的不需要修改。
那么只差一个问题一了,哈哈哈。
  1. import re
  2. with open('C.txt', 'r', encoding='utf-8') as f:
  3.     data = f.readlines()
  4. new_data = []
  5. for item in data:
  6.     item = item.strip()
  7.     sorted_item = sorted(re.sub(r'[{|}]', '', item).split(','))
  8.     new_data.append(','.join(sorted_item))
  9. for index, item in enumerate(new_data):
  10.     if ',' in item and (item in new_data[0:index] or item in new_data[index + 1:]):
  11.         data[index] = '{}\n'
  12.         new_data[index] = ''

  13. with open('B.txt', 'w', encoding='utf-8') as f:
  14.     f.writelines(data)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2022-8-9 21:49:45 | 显示全部楼层
Amgalang 发表于 2022-8-9 21:08
晚上好,

我刚回复你一个帖子,发现没发出去,现在再发一次。若有重复只看一个就行。
  1. import re
  2. with open('C:\\Users\\fxylo\\Downloads\\C2.txt', 'r', encoding='utf-8') as f:
  3.     data = f.readlines()
  4. new_data = []
  5. for item in data:
  6.     item = item.strip()
  7.     sorted_item = sorted(re.sub(r'[{|}]', '', item).split(','))
  8.     new_data.append(','.join(sorted_item))
  9. for index, item in enumerate(new_data):
  10.     if ',' in item and (item in new_data[0:index] or item in new_data[index + 1:]):
  11.         data[index] = '待删项——' + data[index]

  12. with open('C:\\Users\\fxylo\\Downloads\\B.txt', 'w', encoding='utf-8') as f:
  13.     f.writelines(data)
复制代码

这个也许可以
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-10-14 13:12

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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