如何在Python中从空格分隔的文件中提取特定列?


问题内容

我正在尝试处理蛋白质数据库中用空格(不是\ t)分隔的文件。我有一个.txt文件,我想提取特定的行,并且我只想从那几行中提取几列。

我需要在Python中完成。我首先尝试使用命令行,并使用awk命令没有问题,但是我不知道如何在Python中执行相同的操作。

这是我的文件的一部分:

[...]
序列6 B 80 ALA LEU系列LYS LYS ALA GLN THR PRO GLN GLN TRP          
序列7 B 80 LYS PRO                                                      
螺旋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和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)

问题答案:

如果您已经提取了该行,则可以使用进行拆分line.split()。这将为您提供一个列表,您可以从中提取所需的所有元素:

>>> test='HELIX 2 2 CYS A 97'
>>> test.split()
['HELIX', '2', '2', 'CYS', 'A', '97']
>>> test.split()[3]
'CYS'