2
    self.viewerData = []
    tempViewerData = []
    tempViewer = []
    started = False
    with open("tittardata.txt", "r") as fp:
        for i, line in enumerate(fp.readlines()):
            if line.startswith("=="):
                started = True
                continue
            if started and line.startswith("--"):
                started = False
            if started == True:
                tempViewerData.append(line.rstrip("\n"))

以下のtxtファイルから、両端が「---」で区切られたブロックを読み取ろうとしています。最初のブロックでは、区切りは「===」で始まり「--」で終わるさまざまな記号によって処理されます。次のブロックは同じシンボルによって解析されるため、ブロックの抽出がより困難になります。これはこれまでの私の試みです。すべての助けに感謝します。

以下は、テキスト ファイルからの抜粋です。

=================
19.37/2
19.52/2
21.07/1
21.22/1
21.37/1
-------
19.37/2
19.52/2
-------
4

2 に答える 2

0

=または空白のみで構成される行を効果的に作成するジェネレーターを使用してから、-空白ではないデータでグループ化します。

from itertools import groupby

with open('your_file') as fin:
    lines = (line.strip('-=\n') for line in fin)
    blocks = [list(g) for k, g in groupby(lines, bool) if k]
    # [['19.37/2', '19.52/2', '21.07/1', '21.22/1', '21.37/1'], ['19.37/2', '19.52/2']]

一度にすべてのデータが必要ない場合は、blocks代わりにジェネレーターを作成し、それをループします....

blocks = (list(g) for k, g in groupby(lines, bool) if k)
for block in blocks:
    # do something
于 2013-12-30T16:38:19.217 に答える