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



嗨,我想删除数据表中单列中的重复条目。在编写输出文件时,有没有一种简单的方法可以做到这一点?这是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"one_answers"alt"的连接,是我唯一想应用这种重复数据消除的列,所以我以这种方式编写了脚本。一切看起来都很好,但每个单元格中都有括号"["]和撇号"'"。我应该如何修改我的代码,使它们不在那里?

您必须使用逗号拆分字符串

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

最新更新