【发布时间】:2014-09-10 14:35:47
【问题描述】:
我正在尝试处理蛋白质数据库中的一个文件,该文件由空格(不是 \t)分隔。我有一个 .txt 文件,我想提取特定的行,并且我只想从这些行中提取几列。
我需要用 Python 来做。我首先尝试使用命令行并使用 awk 命令没有问题,但我不知道如何在 Python 中执行相同操作。
这是我的文件的摘录:
[...] SEQRES 6 B 80 ALA LEU SER ILE LYS LYS ALA GLN THR PRO GLN GLN TRP SEQRES 7 B 80 赖氨酸专业版 螺旋 1 1 THR A 68 SER A 81 1 14 螺旋 2 2 CYS A 97 LEU A 110 1 14 螺旋 3 3 ASN A 122 SER A 133 1 12 [...]例如,我想只取“HELIX”行,然后取第 4、第 6、第 7 和第 9 列。我开始使用 for 循环逐行读取文件,然后提取以 'HELIX' 开头的那些行......仅此而已。
编辑:这是我现在的代码,但打印不能正常工作,只打印每个块的第一行(HELIX SHEET AND DBREF)
#!/usr/bin/python
import sys
for line in open(sys.argv[1]):
if 'HELIX' in line:
helix = line.split()
elif 'SHEET'in line:
sheet = line.split()
elif 'DBREF' in line:
dbref = line.split()
print (helix), (sheet), (dbref)
【问题讨论】:
-
你能发布你目前得到的代码吗?
-
请发布您的代码。你的具体问题是什么?
-
我的代码一团糟,这就是我没有发布它的原因......我什至不知道我现在在做什么。我的具体问题是我需要找到那些以“HELIX”开头的行的特定列。对于那些以“SHEET”开头的行,另一个特定的列等等。所以,我在阅读了一些 cmets 后完成了这个:for line in open(sys.argv[1]): if 'HELIX' in line: cols = line. split() print (cols[0], cols[3], cols[5], cols[6], cols[8]) 事情是:我不想对这些行做同样的事情从“SHEET”开始(仅更改我要提取的列的位置)。