我怎么解析?

时间:2012-11-15 08:38:46

标签: python

MUC20 17615 NP_689886.2 MET 01280 NP_001120972.1体外;体内;酵母双杂交15314156

SMURF2 06901 NP_073576.1 TFPI2 08962 NP_006519.1酵母双杂交15231748

ERBB2 01281 NP_004439.2 ERBB2 01281 NP_004439.2体外;体内10372802,1706616,12354693,11500516

ACPP 01378 NP_001127666.1 ERBB2 01281 NP_004439.2体外;体内11067847,10851066,9705354

PIK3R1 01381 NP_852664.1 ERBB2 01281 NP_004439.2 in vivo 1351056,16843263

PLCG1 01398 NP_002651.2 ERBB2 01281 NP_004439.2 in vivo 1676673,1683701

...

请帮助我。我的数据看起来像这样。我想用python解析蛋白质的配对名称(粗体)。 配对的名称应该存储如下。例如,MUC20 10 MET。和SMURF2 10 TFPI2。 在名称之间,应插入数字10。

MUC20 10 MET

SMURF2 10 TFPI2

ERBB2 10 ERBB2

ACPP 10 ERBB2

我如何解析上面的内容?

谢谢。

3 个答案:

答案 0 :(得分:2)

你可以用空格分割,然后取0和第三个元素并在它们之间插入'10'?

例如:

def parseString(origString):
    splitString = origString.split(' ')
    return splitString[0] + ' 10 ' + splitString[3]

答案 1 :(得分:1)

这至少是三个问题:

  1. 解析,即识别输入文件中感兴趣的信息,将其与您不感兴趣的内容区分开来。或许可以查看regular expressions这部分内容。
  2. 将解析出的信息存储在合适的结构中。一个普通的Python列表就足够了。
  3. 使用存储的信息生成其他新的“报告”,您可以在其中插入10。通过迭代(2)中的列表,这是微不足道的。

答案 2 :(得分:0)

您可能不需要正则表达式来解决此问题,但是,如果要使用它们,请尝试:

import re

pattern = re.compile('^(\w+)\D\d+\D\w+\D\d\D(\w+)')
groups = pattern.search(your_string).groups()
print groups[0] + ' 10 ' + groups[1]