2

我构建了以下函数来对行进行排序,然后每行将行内的内容排序为数值。

像这样的行:

67:1 45:1 67:1 89:1
31:1 89:5 45:1 23:1 

代码:

with open("SVM/svm-pos-train.txt") as f, open("SVM/svm-pos-train2.txt", 'w') as out:
                for line in f:
                    line = line.split()
                    line.sort(key = lambda x: int(x.split(':')[0]))
                    out.write(" ".join(line) + '\n')

我如何编辑它,以便从行中删除重复项,如下所示:

 45:1 67:1 89:1
 23:1 31:1 45:1 89:1

我一直在搜索和尝试/(很多)错误,但没有运气。

4

2 回答 2

7

使用

line = line.split()
line = list(set(line))

set返回唯一元素的无序集合,然后将其转换回列表,然后对列表进行排序。

编辑:

line = line.split()
line = list(set(line))
out.write(" ".join(sorted(line, x: (int(x.split(':')[0]), int(x.split(':')[1])))) + '\n')
于 2013-06-05T16:00:47.163 回答
1

希望这会有所帮助:

#!/usr/bin/python

with open("d1.txt") as f, open("d2.txt", 'w') as out:
    for line in f:
        fields = line.split()
        set_ = set(fields)
        list_ = list(set_)
        list_.sort()
        out.write(" ".join(list_) + '\n')
于 2013-06-05T16:05:14.943 回答