我正在尝试处理由空格(而不是\ t)分隔的蛋白质数据库中的文件。我有一个.txt文件,我想提取特定的行,并从那些行中,我只想提取几列。如何从Python中的空格分隔文件中提取特定的列?
我需要在Python中完成它。我首先尝试使用命令行,并使用awk命令,没有任何问题,但我不知道如何在Python中执行相同的操作。
这里是我的文件的摘录:
[...] SEQRES 6 B 80 ALA LEU SER ILE LYS LYS ALA GLN THR PRO GLN GLN TRP SEQRES 7 B 80 LYS PRO HELIX 1 1 THR A 68 SER A 81 1 14 HELIX 2 2 CYS A 97 LEU A 110 1 14 HELIX 3 3 ASN A 122 SER A 133 1 12 [...]
例如,我想只拿“HELIX”行,然后第4,第6,第7和第9列。我开始用for循环逐行读取文件,然后提取以'HELIX'开头的那些行......就这些了。
编辑:这是我现在所拥有的代码,但打印工作不正常,只打印每个块的第一行(HELIX表和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)
你能后目前你有什么样的代码? – GHC 2014-09-10 14:41:07
请发布您的代码。你的问题具体是什么? – idanshmu 2014-09-10 14:41:54
我的代码中有一团糟,这就是为什么我没有发布它......我甚至不知道我现在在做什么。我的具体问题是我需要查找以'HELIX'开头的行,具体列。对于以'SHEET'开头的行,还有其他特定的列等等。所以,我在阅读了一些评论之后做了这些: for line in open(sys.argv [1]): \t如果'HELIX'符合: \t \t COLS = line.split() \t \t打印(COLS [0],COLS [3],COLS [5],COLS [6],COLS [8]) 事情是:我想不必对'SHEET'开始的那些行进行相同的操作(只更改我想要提取的列的位置)。 – 2014-09-10 15:10:54