[我正在尝试使用Python 3从我的re.findall输出中删除引号。我尝试了来自各种论坛的建议,但是它没有按预期工作,最终想到了在这里问自己。
我的代码:
import requests
from bs4 import BeautifulSoup
import re
import time
price = [];
while True:
url = "https://api.binance.com/api/v3/ticker/price?symbol=ETHUSDT"
page = requests.get(url)
soup = BeautifulSoup(page.content, 'html.parser')
data = soup.prettify()
for p in data:
match = re.findall('\d*\.?\d+',data)
print("ETH/USDT",match)
price.append(match)
break
match
的输出给出:['143.19000000']
。我希望它像:[143.1900000]
,但我不知道该怎么做。
我遇到的另一个问题是,标价将每个对象都像单个列表一样追加。因此,price
的输出将是例如[[a], [b], [c]]
。我想像[a, b, c]
那样,在解决这两个问题时遇到了一些麻烦。
谢谢:)
要获取浮点数而不是字符串:
float_match = [float(el) for el in match]
要获取列表而不是列表列表:
for el in float_match:
price.append(el)
将requests.get()
的响应解析为JSON,而不是使用BeautifulSoup:
import requests
url = "https://api.binance.com/api/v3/ticker/price?symbol=ETHUSDT"
response = requests.get(url)
response.raise_for_status()
data = response.json()
print(data["price"])