您好我想删除数据表中单列中的重复条目。编写输出文件时有一个简短的方法吗?它是python3脚本。
with open(input) as infile, open (output, 'w') as outfile:
reader = csv.reader(infile, delimiter='\t')
writer = csv.writer(outfile, delimiter='\t')
for gg, poss, codee, ref, alt, *rest in reader:
gg = int(gg)
poss = int(poss)
writer.writerow([gg, poss, codee, d[group][poss-1], ref + ',' +alt] + rest)
在最后一行,我想要列" ref +',' + alt"没有任何重复的值。使用上面的命令,我有如下输出:
A,B,B,C
G,G,A,T
G,A,A
T,T
我希望这是:
A,B,C
G,A,T
G,A
T
我可以在最后一行加入一个简短的命令吗?或者我应该启动一组新命令来执行此操作?请帮我!谢谢。
使用OrderedDict编辑
from collections import OrderedDict
with open(notmatch) as infile, open (two, 'w') as outfile:
reader = csv.reader(infile, delimiter='\t')
writer = csv.writer(outfile, delimiter='\t')
for gg, poss, codee, ref, alt, *rest in reader:
gg = int (gg)
poss = int(poss)
cls = ref + alt
clss = list(OrderedDict.fromkeys(cls))
writer.writerow([gg, poss, codee, d[gg][poss-1], clss] + rest)
所以我使用了OrderedDict,它似乎为我提供了如下列的输出" clss":
['A','B','C']
['G','A','T']
['G','A']
['T']
第5列是" ref"和" alt"是我想要应用此重复数据删除的唯一列,所以我以这种方式编写了我的脚本。一切看起来不错,但有括号" [" "]和撇号"'"在每个细胞中。我应该如何修改我的代码以使它们不在那里?
答案 0 :(得分:2)
您必须使用逗号分隔字符串
>>> a = "A,B,B,C"
>>> a.split(',')
['A', 'B', 'B', 'C']
然后使用set来获取唯一值。
>>> set(a.split(','))
set(['A', 'C', 'B'])
再次使用逗号
加入>>> ','.join(set(a.split(',')))
'A,C,B'