テキスト ファイルの読み取り中に最初の 17 行をスキップしたい。
ファイルが次のようになっているとします。
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
good stuff
いいものだけが欲しい。私がやっていることはもっと複雑ですが、これは私が問題を抱えている部分です。
以下のようにスライスを使用します。
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
インデックス 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
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" よりも複雑な場合に簡単に拡張できます (ただし、相互依存はありません)。
テーブルだと。
pd.read_table("path/to/file", sep="\t", index_col=0, skiprows=17)
linetostart
このソリューションは、変数で指定された行数をスキップするのに役立ちました。それらも追跡したい場合は、インデックス (int) と行 (string) を取得します。あなたの場合、 linetostart を 18 に置き換えるか、 linetostart 変数に 18 を割り当てます。
f = open("file.txt", 'r')
for i, line in enumerate(f, linetostart):
#Your code
リスト内包表記を使用して、ワンライナーにすることができます。
[fl.readline() for i in xrange(17)]
PEP 202およびPython ドキュメントのリスト内包表記の詳細。