[英]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.loads
或ast.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.