8

我正在使用以下内容读取制表符分隔的文件。文件中有三列,但当我仅打印列标题时第一列被忽略。我如何也包括第一列

f = open("/tmp/data.txt")
for l in f.readlines():
  print l.strip().split("\t")
  break
  f.close()

输出:['session_id\t', '\tevent_id_concat']

第一列名称是id上面数组中未打印的位置

EDIT

print l 产生以下结果

编辑1:

   'id\tsession_id\tevent_id_concat\r\n'

   Output: ['id\t', '\tevent_id_concat'] 
4

2 回答 2

18

我还建议使用 csv 模块。如果您想读取以 CSV 格式(制表符/空格/其他分隔符)存储的类似表格的结构,它很容易使用并且最适合。

模块文档给出了很好的例子,其中最简单的用法被描述为:

import csv
with open('/tmp/data.txt', 'r') as f:
    reader = csv.reader(f)
    for row in reader:
        print row

每行都是一个列表,如果您想进行基于索引的操作,这非常有用。

如果您想更改分隔符,则有一个关键字,但我通常对预定义的方言很好,也可以通过关键字定义。

import csv
with open('/tmp/data.txt', 'r') as f:
    reader = csv.reader(f, dialect='excel', delimiter='\t')
    for row in reader:
        print row

我不确定这是否会解决您的问题,但使用详细模块将确保您的文件有问题,而不是您的代码有问题,如果错误仍然存​​在。

于 2013-01-09T07:51:16.460 回答
7

它应该可以工作,但最好使用'with':

with open('/tmp/data.txt') as f:
   for l in f:
       print l.strip().split("\t")

如果没有,那么您的文件可能没有所需的格式。

于 2013-01-09T06:51:16.193 回答