我想将每两行字段转换为包含两行的列。并为每一行循环此转换
这是输入:
id refpop001 altpop001 refpop002 altpop002 refpop003 altpop003
id1 6 274 2 93 5 95
id2 202 0 220 0 73 0
id3 166 159 0 173 114 90
这是所需的输出:
id pop001 pop002 pop003
id1ref 6 2 5
id1alt 274 93 95
id2ref 202 220 73
id2alt 0 0 0
id3ref 166 0 114
id3alt 159 173 90
标题和标识列仅用于说明,在输出中不需要
答案 0 :(得分:0)
你可以循环输入然后将其拆分,也许就像这个
一样int i = 0
for row in input:
row_array = row.split()
i = i+=1
ref = row_array[0] + " " + row_array[2] + " " + row_array[4]]
alt = row_array[1] + " " + row_array[3] + " " + row_array[5]
print "id" + i +"ref " + ref
print "id" + i + "alt" + alt
实际上没有运行此代码,但是这个想法就是在必要时操纵它。
答案 1 :(得分:0)
鉴于您正在转换文件中的制表符分隔的纯文本,并且您的数据大小没有变化,直接的方法是:
lines=open('file_or_stream_name.txt','r').readlines();
newLines=[]
newLines.append('\t'.join('id','pop001','pop002','pop003')) #header line
for line in lines[1:]:
elements=line.split('\t')
newLine=[]
newLine.append(elements[0]+'ref')
newLine.extend(elements[1::2])
newLines.append('\t'.join(newLine))
newLine=[]
newLine.append(elements[0]+'alt')
newLine.extend(elements[2::2])
newLines.append('\t'.join(newLine))
newText='\n'.join(newLines) #or '\r\n'.join(...), if you're in Windows