Python: 索引制表符分隔的文件
我有一个文本文件,里面的数据是用制表符分隔的,内容大概是这样的:
1_0 NP_045689 100.00 279 0 0 18 296 18 296 3e-156 539
1_0 NP_045688 54.83 259 108 6 45 296 17 273 2e-61 224
我需要提取特定的列,比如第二列。
我尝试用下面的代码来实现:
z = open('output.blast', 'r')
for line in z.readlines():
for col in line:
print col[1]
z.close()
但是我遇到了“索引超出范围”的错误。
5 个回答
3
import csv,StringIO
text="""1_0 NP_045689 100.00 279 0 0 18 296 18 296 3e-156 539
1_0 NP_045688 54.83 259 108 6 45 296 17 273 2e-61 224"""
f = csv.reader(StringIO.StringIO(text), delimiter='\t')
for row in f:
print row[1]
有两件事需要注意:
reader方法中的分隔符参数告诉csv模块如何将文本行拆分开。你可以查看reader函数的其他参数,以扩展功能(比如:quotechar)。
我使用StringIO将文本示例包装成一个文件对象,如果你使用的是文件引用,就不需要这个了。
例如:
f=csv.reader(open('./test.csv'),delimiter='\t')
7
z = open('output.blast', 'r')
for line in z.readlines():
cols = line.split('\t'):
print cols[1]
z.close()
你需要先用 split()
方法把这一行按照制表符(Tab键)分开。
另外,你也可以使用 Python 的 csv
模块,选择制表符作为分隔符来处理。
5
你可以看看这个csv
模块。如果你打算对用制表符分隔的文件做更多的操作,这个模块会对你很有帮助。一个不错的地方是,你可以给不同的列起名字。