我有以下功能构建来排序行,然后每行,它将行内的内容排序为数值。
这样的行:
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
我一直在搜索和试用/(很多)错误,但没有运气。
答案 0 :(得分:7)
使用set
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')
答案 1 :(得分: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')