我正在尝试处理由空格(而不是\ 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)
2014-09-10
Alia_MW
+0
你能后目前你有什么样的代码? –
2014-09-10 14:41:07
+0
请发布您的代码。你的问题具体是什么? –
2014-09-10 14:41:54
+0
我的代码中有一团糟,这就是为什么我没有发布它......我甚至不知道我现在在做什么。我的具体问题是我需要查找以'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