77

テキスト ファイルの読み取り中に最初の 17 行をスキップしたい。

ファイルが次のようになっているとします。

0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
good stuff

いいものだけが欲しい。私がやっていることはもっと複雑ですが、これは私が問題を抱えている部分です。

4

9 に答える 9

148

以下のようにスライスを使用します。

with open('yourfile.txt') as f:
    lines_after_17 = f.readlines()[17:]

ファイルが大きすぎてメモリに読み込めない場合:

with open('yourfile.txt') as f:
    for _ in range(17):
        next(f)
    for line in f:
        # do stuff
于 2012-03-06T05:57:51.667 に答える
40

インデックス 17 から始まる を使用itertools.isliceします。最初の 17 行が自動的にスキップされます。

import itertools
with open('file.txt') as f:
    for line in itertools.islice(f, 17, None):  # start=17, stop=None
        # process lines
于 2012-03-06T06:02:32.343 に答える
3
for line in dropwhile(isBadLine, lines):
    # process as you see fit

完全なデモ:

from itertools import *

def isBadLine(line):
    return line=='0'

with open(...) as f:
    for line in dropwhile(isBadLine, f):
        # process as you see fit

利点: これは、プレフィックス行が "0" よりも複雑な場合に簡単に拡張できます (ただし、相互依存はありません)。

于 2012-05-06T23:08:10.877 に答える
0

テーブルだと。

pd.read_table("path/to/file", sep="\t", index_col=0, skiprows=17)

于 2016-08-27T21:43:09.630 に答える
0

linetostartこのソリューションは、変数で指定された行数をスキップするのに役立ちました。それらも追跡したい場合は、インデックス (int) と行 (string) を取得します。あなたの場合、 linetostart を 18 に置き換えるか、 linetostart 変数に 18 を割り当てます。

f = open("file.txt", 'r')
for i, line in enumerate(f, linetostart):
    #Your code
于 2016-01-19T19:25:41.267 に答える
-1

リスト内包表記を使用して、ワンライナーにすることができます。

[fl.readline() for i in xrange(17)]

PEP 202およびPython ドキュメントのリスト内包表記の詳細。

于 2012-03-06T05:59:49.543 に答える