3

次のような形式のログファイルにテスト結果があります。

役に立たない情報

役に立たない情報

======================

役立つ情報

役立つ情報

======================

テストの成功

各セクションの行数はさまざまである可​​能性があるため、二重の等しい文字'=='が最初に出現するかどうかを確認し、ファイルの最後までその行を文字列に読み込みます。現在、次のコードを使用してファイル全体を文字列に読み込みます。

with open ("Report.txt", "r") as myfile:
    data = myfile.read()

助けてくれてありがとう!

4

4 に答える 4

6
useful = []
with open ("Report.txt", "r") as myfile:
    for line in myfile:
        if "===" in line:
            break
    for line in myfile:
        useful.append(line)
a_string = "".join(useful)

ただし、次のように、ジェネレーターで非表示にすることをお勧めします。

def report_iterator():
    with open ("Report.txt", "r") as myfile:
        for line in myfile:
            if "===" in line:
                break
        for line in myfile:
            yield line

for line in report_iterator():
    # do stuff with line

すべてのフィルタリングとニッチピッキングはジェネレーター関数で実行され、「入力のフィルタリング」のロジックと「入力の操作」のロジックを分離できます。

于 2012-04-19T14:38:46.117 に答える
2

行ごとに読み取ることができ、デフォルトでは行を保存しません。で始まる行を取得すると、文字列またはリストに格納されて'=='いる2番目の行を読み取るまでに読み取ったすべての行。'=='

于 2012-04-19T14:37:28.743 に答える
0

ファイル全体をメモリに保存している場合は、次のように「最初のセクション以外のすべて」を取得できます。

useful = data.split('======================\n',1)[1]

これにより、区切り文字が最初に出現したときにデータが分割され、区切り文字の後のすべてが返さます。

于 2012-04-19T14:37:14.260 に答える
0
myfile = open("Report.txt", "r")
while myfile.readline()[:2] != '==':
    pass
for line in myfile:
    data = line
于 2012-04-19T14:38:12.560 に答える