Python:索引以制表符分隔的文件

2024-06-28 20:10:11 发布

您现在位置: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

我需要解析出特定的列,比如列2。

我试过下面的代码:

z = open('output.blast', 'r')
for line in z.readlines():
    for col in line:
        print col[1]
z.close()

但我得到一个索引超出范围的错误。


Tags: 代码inforcloseoutputnplinecol
3条回答

签出the ^{} module。如果你打算用标签分隔的文件做更多的事情,这也会对你有很大帮助。一件好事是,您可以为不同的列指定名称。

z = open('output.blast', 'r')
for line in z.readlines():
    cols = line.split('\t'):
        print cols[1]
z.close()

首先需要split()制表符上的行。

或者,可以在制表符模式下使用Python的^{}模块。

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方法的delimiter参数告诉csv模块如何分割文本行。检查reader函数的其他参数以扩展功能(即:quotechar)

我使用StringIO将文本示例包装为文件对象,如果使用文件引用,则不需要这样做。

例如:

f=csv.reader(open('./test.csv'),delimiter='\t')

相关问题 更多 >