加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

python – 从txt文件中删除重复的行

发布时间:2020-12-13 19:27:59 所属栏目:Linux 来源:网络整理
导读:我正在处理包含由行分隔的数据的大型文本文件(~20MB). 大多数数据条目是重复的,我想删除这些重复只保留一个副本. 此外,为了使问题稍微复杂一些,重复一些条目并附加额外的信息.在这种情况下,我需要保留包含额外信息的条目并删除旧版本. 例如 我需要离开这个:

我正在处理包含由行分隔的数据的大型文本文件(~20MB).
大多数数据条目是重复的,我想删除这些重复只保留一个副本.

此外,为了使问题稍微复杂一些,重复一些条目并附加额外的信息.在这种情况下,我需要保留包含额外信息的条目并删除旧版本.

例如
我需要离开这个:

BOB 123 1DB
JIM 456 3DB AX
DAVE 789 1DB
BOB 123 1DB
JIM 456 3DB AX
DAVE 789 1DB
BOB 123 1DB EXTRA BITS

对此:

JIM 456 3DB AX
DAVE 789 1DB
BOB 123 1DB EXTRA BITS

NB.最后的订单无关紧要.

有效的方法是什么?

我可以使用awk,python或任何标准的linux命令行工具.

谢谢.

最佳答案
如何(在Python中):

prev = None
for line in sorted(open('file')):
  line = line.strip()
  if prev is not None and not line.startswith(prev):
    print prev
  prev = line
if prev is not None:
  print prev

如果您发现内存使用存在问题,可以使用Unix排序(即disk-based)将排序作为预处理步骤进行排序,并更改脚本以使其不会将整个文件读入内存.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读