Python 或命令行实用程序 - 排序和过滤文件?

发布于 2024-12-01 15:46:01 字数 281 浏览 1 评论 0原文

给定以下形式的数据:

a b 1.1
c d 2.3
b a 1.1

是否可以根据第三列对此类文件进行排序,并删除第三列中重复条目的行,以便输出为:

a b 1.1
c d 2.3

或,

c d 2.3
b a 1.1

我能够仅使用 python、R 或命令行实用程序对一组非常大的文件执行此任务。

谢谢!

Given data of the form:

a b 1.1
c d 2.3
b a 1.1

Is it possible to sort such a file based on the thired column and remove lines where the entry in the third column is duplicated, such that the output will be:

a b 1.1
c d 2.3

or,

c d 2.3
b a 1.1

.

I am capable of using only python, R or command line utilities to perform this task on a set of very large files.

Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

亣腦蒛氧 2024-12-08 15:46:01

Unix sort 应该能够为你完成这项工作:

cat file | sort -u -k3,3n
a b 1.1
c d 2.3
cat file | sort -u -k3,3rn
c d 2.3
a b 1.1

Unix sort should be able to do the work for you:

cat file | sort -u -k3,3n
a b 1.1
c d 2.3
cat file | sort -u -k3,3rn
c d 2.3
a b 1.1
装迷糊 2024-12-08 15:46:01
f = open('text.txt','rb')
filter = []
rows = []
for line in f:
    line = line.replace('\r\n','')
    data = line.split(' ')
    if len(data) >= 3:
        if not data[2] in filter:
            filter.append(data[2])
            rows.append(data)
f.close()

f = open('output.txt','wb')
for row in rows:
    f.write(row[0] + ' ' + row[1] + ' ' + row[2] + '\r\n')
f.close()
f = open('text.txt','rb')
filter = []
rows = []
for line in f:
    line = line.replace('\r\n','')
    data = line.split(' ')
    if len(data) >= 3:
        if not data[2] in filter:
            filter.append(data[2])
            rows.append(data)
f.close()

f = open('output.txt','wb')
for row in rows:
    f.write(row[0] + ' ' + row[1] + ' ' + row[2] + '\r\n')
f.close()
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文