python regex,打印与特定单词关联的值

2024-05-29 03:11:12 发布

您现在位置: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()

我想提取与关键字gashash相关的所有值,数据如下所示:

{
  "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"
}

所以理想的结果是:

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

但我得到的根本不是那样。你知道吗


Tags: to数据fromredatalinehashresult
2条回答

我没有足够的声誉来添加评论,但是除非出于某种原因您真的需要使用regex,否则我将使用python的json库。See this answer了解有关将json加载到python字典并提取值的详细信息。你知道吗

我同意kdd。这里没有理由使用regex,但我认为您的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'])

相关问题 更多 >

    热门问题