如何删除逗号分隔单元格中的重复字母

时间:2014-11-07 04:25:58

标签: python python-3.x

您好我想删除数据表中单列中的重复条目。编写输出文件时有一个简短的方法吗?它是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"是我想要应用此重复数据删除的唯一列,所以我以这种方式编写了我的脚本。一切看起来不错,但有括号" [" "]和撇号"'"在每个细胞中。我应该如何修改我的代码以使它们不在那里?

1 个答案:

答案 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'