2014-11-02 31 views
0

我有这样的字符串的文件:变化串词序

gene_1 1 181 + 1 01 15.2689 b - - - 
gene_2 220 300 - 0 01 0.649993 b - - - 
gene_1 1 295 - 0 10 16.1465 b - - - 
gene_1 39 278 + 0 11 13.4122 b 28 33 -0.698805 
gene_1 1 133 - 0 10 13.9421 p 139 144 0.493777 

我需要改变的第四列(与+柱和 - )内的第五次(0和1)获取下一个:

gene_1 1 181 1 + 01 15.2689 b - - - 
gene_2 220 300 0 - 01 0.649993 b - - - 
gene_1 1 295 0 - 10 16.1465 b - - - 
gene_1 39 278 0 + 11 13.4122 b 28 33 -0.698805 
gene_1 1 133 0 - 10 13.9421 p 139 144 0.493777 

任何想法?

+0

你的代码在哪里?它的问题究竟是什么? – jonrsharpe 2014-11-02 18:48:00

回答

0

你可以阅读字符串文件,并通过空间分割每行:

your_rearranged_lines = [] 

with open("yourFile") as file: 
    for line in file: 
     splitLine = line.split() 
     # stores the first three tokens as normal, switches the fourth and fifth, 
     # and stores the remaining tokens as normal 
     rearranged_line = splitLine[0:4] + splitLine[4] + splitLine[3] + splitLine[4:] 
     your_rearranged_lines.append(rearranged_line) 

实质上,该代码使用Python的slicing syntax。这是假设基于你上面的例子两件事情:

  1. 您的文件不具有在其中必要的空间(如“基因56”)
  2. 您的文件(计算每一划线作为标记)的任何标记每行至少有5个令牌。

如果前者不是真的,你会分裂成应该被视为单个项目的标记,如果后者不是真的,你会遇到超出范围的异常。

+0

谢谢你如此善良,有效! – Peaceandlove 2014-11-02 19:24:36