查找以相同字符串开头的行并保留最后一次出现的位置
我有以下数据:
E 71484666NC 1201011060240260 387802-1227810 1022 25 0 5 2 313D 0 1G5
E 71484666NC 1201011060240263 387902-1227910 1300 10 0 2 1 300D 0 1A5
E 10115693AK 1201011060617450 658160-1517007 021 10 0 896 71 4 131L 2 AA2
E 10310002PR 0201011060102315 191509 -664820 39726 5 5 935 50 46 21282D 5 0hn
我需要找到以相同的前 12 个字符开头的行。如果有多个,我需要删除以前出现的情况,只保留最后一个。所以它应该是这样的:
E 71484666NC 1201011060240263 387902-1227910 1300 10 0 2 1 300D 0 1A5
E 10115693AK 1201011060617450 658160-1517007 021 10 0 896 71 4 131L 2 AA2
E 10310002PR 0201011060102315 191509 -664820 39726 5 5 935 50 46 21282D 5 0hn
注意:在大多数情况下,前 12 个字符之后的字符不匹配...所以检查重复行不是一个选项。
注意:需要保留订单。
I have this data:
E 71484666NC 1201011060240260 387802-1227810 1022 25 0 5 2 313D 0 1G5
E 71484666NC 1201011060240263 387902-1227910 1300 10 0 2 1 300D 0 1A5
E 10115693AK 1201011060617450 658160-1517007 021 10 0 896 71 4 131L 2 AA2
E 10310002PR 0201011060102315 191509 -664820 39726 5 5 935 50 46 21282D 5 0hn
I need to find lines starting with same first 12 characters. If there are multiples, I need to delete previous occurrences and only keep the last one. So it should be like this:
E 71484666NC 1201011060240263 387902-1227910 1300 10 0 2 1 300D 0 1A5
E 10115693AK 1201011060617450 658160-1517007 021 10 0 896 71 4 131L 2 AA2
E 10310002PR 0201011060102315 191509 -664820 39726 5 5 935 50 46 21282D 5 0hn
Note: In most cases characters after the first 12 do not match... So checking duplicate lines is not an option.
Note: Need to preserve the order.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
这将保留行的顺序,同时消除重复项。
编辑: 此版本的 OrderedDict 适用于 Python 2.4、2.5 和 2.6。
This will preserve the order of the lines while eliminating duplicates.
Edit: This version of OrderedDict works on Python 2.4, 2.5, and 2.6.
这会产生:
This produces:
使用字典,将前 12 个字符作为键:
这会自动覆盖所有以前的条目。
Use a dictionary, taking the first 12 characters as a key:
this automatically overrides all previous entries.