2017-09-15 2 views
-1

に関連した値を出力:Pythonの正規表現、JSON風データを解析するための次のコードで特定の単語と

import re 
data = open('toy.json', 'r') 

regexp = re.compile("gas") 

for line in data: 
    print(line) 
    Result = re.search(regexp, line) 
    if Result: 
     print Result.groups() 

Iキーワードgasに関連付けられたすべての値を抽出したい、とhash、データは次のようになります。

"hash": "0xf8f2a397b0f7bb1ff212b6bcc57e4a56ce3e27eb9f5839fef3e193c0252fab26", 
    "gas": "121000", 
    "hash": "0xf2b5b8fb173e371cbb427625b0339f6023f8b4ec3701b7a5c691fa9cef9daf63", 
    "gas": "121000", 

{ 
    "blockNumber": "1941794", 
    "blockHash": "0x41ee74e34cbf9ef4116febea958dbc260e2da3a6bf6f601bfaeb2cd9ab944a29", 
    "hash": "0xf2b5b8fb173e371cbb427625b0339f6023f8b4ec3701b7a5c691fa9cef9daf63", 
    "from": "0x3c0cbb196e3847d40cb4d77d7dd3b386222998d9", 
    "to": "0x2ba24c66cbff0bda0e3053ea07325479b3ed1393", 
    "gas": "121000", 
    "gasUsed": "21000", 
    "gasPrice": "20000000000", 
    "input": "", 
    "logs": [], 
    "nonce": "14", 
    "value": "0x24406420d09ce7440000", 
    "timestamp": "2016-07-24 20:28:11 UTC" 
} 
{ 
    "blockNumber": "1941716", 
    "blockHash": "0x75e1602cad967a781f4a2ea9e19c97405fe1acaa8b9ad333fb7288d98f7b49e3", 
    "hash": "0xf8f2a397b0f7bb1ff212b6bcc57e4a56ce3e27eb9f5839fef3e193c0252fab26", 
    "from": "0xa0480c6f402b036e33e46f993d9c7b93913e7461", 
    "to": "0xb2ea1f1f997365d1036dd6f00c51b361e9a3f351", 
    "gas": "121000", 
    "gasUsed": "21000", 
    "gasPrice": "20000000000", 
    "input": "", 
    "logs": [], 
    "nonce": "1", 
    "value": "0xde0b6b3a7640000", 
    "timestamp": "2016-07-24 20:12:17 UTC" 
} 

ので、理想的な結果は次のようなものになるだろう

しかし、私が得ることは、まったくそうではありません。

+0

です。 – DyZ

+0

ファイルをPython辞書に解析してガス値を選択しないのはなぜですか? – EndermanAPM

+0

どうすればいいですか? –

答えて

1

私はコメントを追加するには十分な評判がありませんが、何らかの理由で本当に正規表現を使用する必要がない限り、Pythonのjsonライブラリを使用します。 jsonをPython辞書にロードして値を抽出する方法については、See this answerを参照してください。

0

私はkddに同意します。ここで正規表現を使用する理由はありませんが、あなたのjsonは問題があると思います。あなたは、単一のファイルを持っていると仮定すると

は、私はそれがこのようになるはずだと思う:

{ 
    "entry": [ 
    { 
    "blockNumber": "1941794", 
    "blockHash": "0x41ee74e34cbf9ef4116febea958dbc260e2da3a6bf6f601bfaeb2cd9ab944a29", 
    "hash": "0xf2b5b8fb173e371cbb427625b0339f6023f8b4ec3701b7a5c691fa9cef9daf63", 
    "from": "0x3c0cbb196e3847d40cb4d77d7dd3b386222998d9", 
    "to": "0x2ba24c66cbff0bda0e3053ea07325479b3ed1393", 
    "gas": "121000", 
    "gasUsed": "21000", 
    "gasPrice": "20000000000", 
    "input": "", 
    "logs": [], 
    "nonce": "14", 
    "value": "0x24406420d09ce7440000", 
    "timestamp": "2016-07-24 20:28:11 UTC" 
    }, 
    { 
    "blockNumber": "1941716", 
    "blockHash": "0x75e1602cad967a781f4a2ea9e19c97405fe1acaa8b9ad333fb7288d98f7b49e3", 
    "hash": "0xf8f2a397b0f7bb1ff212b6bcc57e4a56ce3e27eb9f5839fef3e193c0252fab26", 
    "from": "0xa0480c6f402b036e33e46f993d9c7b93913e7461", 
    "to": "0xb2ea1f1f997365d1036dd6f00c51b361e9a3f351", 
    "gas": "121000", 
    "gasUsed": "21000", 
    "gasPrice": "20000000000", 
    "input": "", 
    "logs": [], 
    "nonce": "1", 
    "value": "0xde0b6b3a7640000", 
    "timestamp": "2016-07-24 20:12:17 UTC" 
    } 
] 
} 

その後、それはあなたが得るのご意見をお聞かせくださいちょうど

import json 
with open('your_file.json') as f: 
    data = json.load(f) 
for entry in data: 
    print(entry['hash']) 
    print(entry['gas']) 
関連する問題