我想在文件中加入两行,基于它们是否以相同的元素开头.
我可以将每行的第一个元素转换为列表,并使用此列表中的元素来搜索每一行,但这似乎不是最有效的方法吗?
我有以下文件
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)
在这个例子中,看起来我可能只能加入其他每一行,但我希望(需要)使代码更通用!
我不认为这很难,但我似乎无法弄明白!谢谢您的帮助
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)