2017-02-23 8 views
0

以下は、土壌に置かれたセンサーから自動的に記録されるサンプルデータです。pythonを使用してデータファイルの一部を抽出する

DATA:

13:00:\0xca~\0x00Z\0x90\0x00\0x13\0xa2\[email protected]\0xc5A\0x95B\0x81\0x01<=>\0x80\0x03#400567223#Node 5#0#SOIL:0-8-0+0#SOILT:20.00#STR:Fri, 16/12/09, 

13:00:00#\0x8c~\0x00`\0x90\0x00\0x13\0xa2\[email protected]\0xc5B/\0xce\0xa6\0x01<=>\0x80\0x03#394750562#Node 6#0#SOIL:108-104-105+110#SOILT:130.00#STR:Fri, 16/12/09 

我々はさらに、予測の目的のためにそれを使用するデータの部分のみを抽出する必要があります。

データの必要な形式は、次の詳細が含まれている必要があります。

13:00:Node 5#0#SOIL:0-8-0+0#SOILT:20.00#STR:Fri, 16/12/09 

私はPythonと正規表現を使用してみましたが、イム文字列の一部を取得することしかでき、唯一のシングルライン用しています。大きなテキストファイルのためにそれをやろうとしていました。

以下は私が試したコードです。悪いコードのために私を失礼にしてください、私はちょうど初心者です。

import re 
filename = '2016lastday.txt' 
pattern = 'Node(.*)$' 
new_file = [] 


with open(filename, 'r') as f: 
    lines = f.readlines() 


for line in lines: 
    match = re.search(pattern, line) 
    if match: 

     new_line = match.group() + '\n' 
     print new_line 
     new_file.append(new_line) 

答えて

0

あなたは、ほとんどがあった:変数の命名することは非常に重要であることを

import re 
filename = '2016lastday.txt' 
pattern = re.compile('(\d\d:\d\d:).*(?<=#)(Node.*?\d\d\/\d\d\/\d\d)') 
new_lines = [] 


with open(filename, 'r') as f: 
    for line in f: 
     match = re.search(pattern, line) 
     if match: 
      new_line = match.group(1) + match.group(2) + '\n' 
      new_lines.append(new_line) 

print new_lines 
# ['13:00:Node 5#0#SOIL:0-8-0+0#SOILT:20.00#STR:Fri, 16/12/09\n', '13:00:Node 6#0#SOIL:108-104-105+110#SOILT:130.00#STR:Fri, 16/12/09\n'] 

注意。 new_fileはあなたの例ではファイルではなく、文字列のリストです。

+0

私は上記のコードを試しましたが、出力はテキストファイル全体ではなく、ファイルの中央にある1行からのみで、最初から反復することはできません。 – vardaan

関連する問題