-2

その行に「コマンド」が含まれている場合、テキストドキュメントから各行の2番目の番号を抽出したいと思います。コマンドと残りの行を番号の横に表示したい。何百もの行があります。

行は次のようになります。

1376328501.285|1166703600|0|SimControl|4|Command 72FB0007: AC28200 - "Thrst History Reset" to DCDR 0 time=62

この行は、必要な方法がプログラムされている場合に出てくるはずです

1166703600 Command 72FB0007: AC28200 - "Thrst History Reset" to DCDR 0 time=62

どうすればいいですか?

4

4 に答える 4

2

csvmoduleを使用して、データを CSV データのように (パイプで区切られていても) 扱います。

import csv

with open('inputfile', 'rb') as inputfile:
    reader = csv.reader(inputfile, delimiter='|')
    for row in reader:
        if len(row) > 5 and row[5].lower().startswith('command'):
            print row[1], row[5]

csv.reader()、各行のリストを生成する反復子を提供します。サンプル行は次のようになります。

['1376328501.285', '1166703600', '0', 'SimControl', '4', 'Command 72FB0007: AC28200 - "Thrst History Reset" to DCDR 0 time=62']

インデックスは 0 から始まるため、Commandテキストの列はrow[5]; 2 番目の列番号は ですrow[1]。上記のコードは、現在の行に十分な列があるかどうかをテストし、row[5]小文字の場合は単語で始まるかどうかをテストしますcommand

上記は Python 2 を想定しています。Python 3 の場合は微妙に異なります。

import csv

with open('inputfile', newline='') as inputfile:
    reader = csv.reader(inputfile, delimiter='|')
    for row in reader:
        if len(row) > 5 and row[5].lower().startswith('command'):
            print(row[1], row[5])
于 2013-10-30T17:48:20.200 に答える
0
>>> l = """1376328501.285|1166703600|0|SimControl|4|Command 72FB0007: AC28200 - "Thrst History Reset" to DCDR 0 time=62"""
>>> l = [l,l,l]

>>> [ele.split("|")[1] for ele in l if "command" in ele.lower()]
['1166703600', '1166703600', '1166703600']
于 2013-10-30T17:52:08.580 に答える