簡體   English   中英

Python使用正則表達式在字符串foo:之后提取數字

[英]Python Extract numbers in after the string foo: with regex

我有這樣的數據: {"address": "1GocfVCWTiRViPtqZetcX4UiCxnKxgTHwK", "balance": 1234, "pending_balance": 0, "paid_out": 0}

我想在平衡后提取數字,但是它可以從0到無窮大。

因此,從上面的示例中可以看到所需的輸出:

1234

還有一個問題。 我已經得到的數據是這樣{"address": "1GocfVCWTiRViPtqZetcX4UiCxnKxgTHwK", "invoice": "invNrKU2ZFMuAJKUiejyVe3X34ybP9awyWZBfUEdY2dZKxYTB8ajW", "redeem_code": "BTCvQDD9xFYHHDYNi1JYeLY1eEkGFBFB49qojETjLBZ2CVYyPm56B"}請告訴我這樣做的正常方式:

strs = repr(s)  
address = s[13:47]
invoice = s[62:115]
redeem_code = s[134:187]
print(address)
print(invoice)
print(redeem_code)

謝謝。

永遠不要使用正則表達式來解析這樣的結構化數據。 一旦使用適當的方法進行解析( json.loadsast.literal_eval都可以在此處工作),它們就變成了原生python結構,訪問起來很簡單。

在您的情況下,在一行中使用json.loads

import json

print(json.loads('{"address": "1GocfVCWTiRViPtqZetcX4UiCxnKxgTHwK", "balance": 1234, "pending_balance": 0, "paid_out": 0}')["balance"])

結果:

1234

(同樣的方法適用於您的第二個問題)

實際上,您向我們展示的是在Python中稱為字典的東西。 那是一組鍵和值。

在此處查找更多信息: https : //docs.python.org/3.6/tutorial/datastructures.html#dictionaries

您的字典具有以下鍵和值:

"address" --> "1GocfVCWTiRViPtqZetcX4UiCxnKxgTHwK"
"balance" --> 1234
"pending_balance" --> 0
"paid_out" --> 0

現在,如果您擁有一本字典:

d = {"address": "1GocfVCWTiRViPtqZetcX4UiCxnKxgTHwK", "balance": 1234, "pending_balance": 0, "paid_out": 0}

print(d.get('balanace')) #1234

但是,如果您擁有的是帶有該信息的外部文件,或者您是從某種Web服務獲取的,則您具有字典的字符串表示形式。 JSON庫在這里變得很有價值:

import json

# Assuming you got a string
s = '{"address": "1GocfVCWTiRViPtqZetcX4UiCxnKxgTHwK", "balance": 1234, "pending_balance": 0, "paid_out": 0}'
d = json.loads(s) # <-- converts the string to a dictionary

print(d.get('balance')) #1234

您的數據看起來像json,因此處理數據的更好方法是使用json模塊進行解析

import json
parsed_data = json.loads(data)
balance = parsed_data['balance']

如果必須使用正則表達式,則可以使用以下代碼

import re
match = re.search('"balance": (\d+)', data)
balance = int(match.group(1))

在此示例中,我使用\\ d +匹配數字字符串和括號以創建組。 組0是整個匹配的字符串,組1是我們創建的第一個組。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM