8

以下を使用してタブ区切りファイルを読み取ります。ファイルには3つの列がありますが、列ヘッダーのみを印刷すると最初の列が無視されます。最初の列も含めるにはどうすればよいですか

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 に答える