2017-06-02 8 views
1

データ マスターファイルを引き出す:のpython:別のファイル内のファイルと一致文字列を読み、ラインに

1 17.248.154.203       =>  7.88Kb  28.6Kb  28.6Kb  28.6KB 
    192.168.42.12       <=  208b  151Kb  151Kb  151KB 
    2 a23-58-18-217.deploy.static.akamaitechn =>  6.61Kb  8.60Kb  8.60Kb  8.60KB 
    192.168.42.12       <=  15.0Kb  4.95Kb  4.95Kb  4.95KB 
    3 a23-207-129-216.deploy.static.akamaitec =>   0b  8.09Kb  8.09Kb  8.09KB 
    192.168.42.12       <=   0b  3.25Kb  3.25Kb  3.25KB 
    4 17.252.172.5        =>   0b  4.92Kb  4.92Kb  4.92KB 
    192.168.42.2        <=   0b  3.73Kb  3.73Kb  3.73KB 
    192.168.42.2        <=   0b  3.73Kb  3.73Kb  3.73KB 

理想の出力に含ま:

192.168

192.168.42.2 
192.68.42.12 

ファイルを検索します.42.12 3.25(例)

192。 168.42.2 3.73

[リンク] https://pastebin.com/Ms4TyLMW - 私はあなたの提案に基づいて

を自分のコードを変更しましたこれは、私が得たものです!

「192.168.42.12 151

192.168.42.12 4.95

192.168.42.12 3.25

192.168.42.2 3.73

192.168.42.2 3.73

192.168.42.12 5.36

192.168.42.12 705' 私は、この複数の同じdata.Iが同じIPを印刷しようと、このような単一のラインでの使用に対応しています印刷を避けることができますどのように

@saul

'192.168.42.12 2043(192.168.42.12の総使用)

192.168.42.2 123(192.168.42.2の総使用量')

+0

ようこそ。問題を説明するために使用した研究とコードを追加してください。 – gmuraleekrishna

+0

は不明です。マッチングのルールは何ですか? – RomanPerekhrest

+0

詳しいinput.Letを提供していないのは申し訳ありません。条件とコードを投稿してください。 – praveen

答えて

0

私は、テキストファイル内の2つのIPアドレスを持っています。最初に私はIPアドレスを読んでから、IPアドレスを使用している別のファイルをチェックする必要があります(上記の私の質問を参照してください)。

これで、対応するIPと用途を別のファイルから抽出する必要があります。 このコードは、IPと使用の特定の位置を特定します。 問題は、反復しようとしたときです。iplistファイル内の最初のデータが常に入力されます。前もって感謝します。

コード:

for line in data_consumed: 
     for element in iplist: 
      if element in line: 
       result = line 
       ip = line[5:-50] 
       result_ip = ip.replace(" ","") 
       usage = line[-8:] 
       d = usage.replace('KB', '') 
       usage = d.replace('B','') 
       usage = usage.replace('\n','') 
       final_usage += float(usage) 
       try: 
        final_usage += float(usage) 
       except ValueError: 
        pass 
       megabyte = float(0.000976562) 
       result_usage = megabyte * final_usage 
     print result_ip + '\t\t\t' + str(result_usage) 

所望の出力:

192.168.42.12 usage(total value) 

192.168.42.2 usage(totalvalue) 
+2

あなたの質問に編集リンクを使用して追加情報を加えてください。回答を投稿するボタンは、質問に対する完全な回答のためだけに使用してください。 - [レビューの投稿](レビュー/低品質の投稿/ 16305223) –

+0

入力していただきありがとうございます。 – praveen

0

あなたは、コードのように行うことができます。

strStr = ["192.168.42.2", "192.168.42.12"] 

# the "e:\temp\111.txt" is the searching file storage path. 
with open(r"e:\temp\111.txt") as f: 
    lines = f.readlines() 
    for ii in strStr: 
     sumResult = 0 
     for line in lines: 
      if ii in line: 
       sumResult += float(line.strip(" ").split(" ")[-1].split("KB")[0]) 
     print(ii, sumResult) 

コード結果は次のとおりです。

192.168.42.2 7.46 
192.168.42.12 159.2 

マッチ条件を指摘していないので、ラインデータから最後の値を分割するだけで問題があります。

+0

なぜ「192.168.42.2」と「192.168.42.12」の値だけが表示されるのですか? そして、あなたが期待している状態は何かを教えてください。 – praveen

+0

1.データは '192.18.42.12'ではなく' 192.68.42.12'であることを確認してください。 2.データサンプル '192.168.42.2 <= 0b 3.73Kb 3.73Kb 3.73KB'を提供しました。3.73が3回現れました。どの値を解析したいですか? – saul

+0

ああ申し訳ありませんが私の間違い(誤植)。それは私のために働いたことを変更した後にありがとう。 これは私が得たものです! – praveen

関連する問題