ファイル内のトークン':path'をシークしようとしています。次に、次のすべての(任意の桁数)数値を数値として読み取ります(したがって、':path、123'の場合、ファイル内の、をシークしてから、整数123)。次に、現在のシーク位置とpos + 123の間の文字を読み取ります(リストなどに保存します)。次に、「:path」の次の一致までシークし、プロセスを繰り返します。
私は少し次のような関数が欲しいです:
def fregseek(FILE、current_seek、/ regex /): 。 。 value_found =?#:path、[0-9]+の次のN文字を読み取った結果 。 。 next_start_seek、value_foundを返します
1行に「:path」と一致するものはいくつでもあり、その文字列は「、」の後に指定された文字数の範囲内で発生する可能性があります。私は、各行を読み取る厄介なゴミの束を作成しました。次に、各行について、一致によって示される最初のN文字を切り刻み、すべてが食べ尽くされるまで文字列の処理を続けます。次に、次の文字列を読み取ります。
これはひどいです、私が本当にする必要があるのはシークだけであるときに潜在的に巨大なファイルからすべての行を丸呑みする必要はありません(特に改行は無関係なので、行が簡単であるという理由だけで余分な処理ステップがありますファイルからのプルはばかげています)。
ですから、それが私の問題です。一致するものを探し、値を読み取り、その値の最後から次の一致を探すなど、ファイルがなくなるまで続ける必要があります。
誰かがこれで私を助けることができるならば、私は彼らから聞いてうれしいです:)
可能であれば非標準ライブラリを避けたいです。最短のコードも必要ですが、これは私の懸念事項の中で最も少ないものです(速度とメモリ消費は重要な要素ですが、一部をブートストラップするためだけに50loc余分にしたくありません。小さな関数が入っているライブラリは、それが何であるかを知っていれば、ただ引き裂くことができます)。
私はPythonコードを好みますが、この点でperlがpythonに勝る場合は、代わりにperlを使用します。ひどく遅くならない限り、賢いsed / awk/bashスクリプトなども使用できます。
よろしくお願いします。