Python:连接包含特定字符串的行

Sty*_*ize 0 python join

我想在文件中加入两行,基于它们是否以相同的元素开头.
我可以将每行的第一个元素转换为列表,并使用此列表中的元素来搜索每一行,但这似乎不是最有效的方法吗?

我有以下文件

1,AF534061.1,T,A  
1,K02718.1,T,A  
16,AF534061.1,G,-  
16,K02718.1,G,-  
17,AF534061.1,T,-  
17,K02718.1,T,-  
18,AF534061.1,A,-  
18,K02718.1,A,-  
19,AF534061.1,T,-  
19,K02718.1,T,-  
20,AF534061.1,A,-  
20,K02718.1,A,-  
21,AF534061.1,A,-   
21,K02718.1,A,-  
24,AF534061.1,C,T   
Run Code Online (Sandbox Code Playgroud)

如果第一项在行之间共享,我想加入行.所以我想获得以下输出

1,AF534061.1,T,A,1,K02718.1,T,A
16,AF534061.1,G,-,16,K02718.1,G,-
17,AF534061.1,T,-,17,K02718.1,T,-
18,AF534061.1,A,-,18,K02718.1,A,-
19,AF534061.1,T,-,19,K02718.1,T,-
20,AF534061.1,A,-,20,K02718.1,A,-
21,AF534061.1,A,-,21,K02718.1,A,-
24,AF534061.1,C,T
Run Code Online (Sandbox Code Playgroud)

在这个例子中,看起来我可能只能加入其他每一行,但我希望(需要)使代码更通用!

我不认为这很难,但我似乎无法弄明白!谢谢您的帮助

eph*_*ent 5

Python标准库中充满了各种工具.对于这项工作,请使用itertools.groupby.

import itertools

lines = '''1,AF534061.1,T,A
1,K02718.1,T,A
16,AF534061.1,G,-
16,K02718.1,G,-
17,AF534061.1,T,-
17,K02718.1,T,-
18,AF534061.1,A,-
18,K02718.1,A,-
19,AF534061.1,T,-
19,K02718.1,T,-
20,AF534061.1,A,-
20,K02718.1,A,-
21,AF534061.1,A,-
21,K02718.1,A,-
24,AF534061.1,C,T'''.split('\n')

for key, group in itertools.groupby(lines, lambda line: line.partition(',')[0]):
    print ','.join(group)
Run Code Online (Sandbox Code Playgroud)