首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将列表转换为可除的浮点数

将列表转换为可除的浮点数
EN

Stack Overflow用户
提问于 2017-07-11 12:23:19
回答 1查看 98关注 0票数 1

我一直在非常努力地为世界做一个货币转换器。我一直面临的众多问题之一是,我的货币转换器无法计算出汇率本身;你必须这样做。当然,我想通了。

但我的问题是:我得到了欧元的汇率,但这是一个列表,我需要一个浮点数来计算。我该怎么做呢?

下面是我尝试过的:

代码语言:javascript
运行
复制
euro_exchange = float(str(tree.xpath('//div[@class="price"]/text()')))
######################################################################
euro_exchange = tree.xpath('//div[@class="price"]/text()')

float(str(euro_exchange)
################################################################
euro_exchange = float(tree.xpath('//div[@class="price"]/text()')

你会明白其中的规律。当我尝试euro_exchange = float(str(tree.xpath('//div[@class="price"]/text()')))时,它显示(我使用的是TkInter,BTW):

代码语言:javascript
运行
复制
Exception in Tkinter callback
Traceback (most recent call last):
  File "/usr/lib/python3.5/tkinter/__init__.py", line 1562, in __call__
    return self.func(*args)
  File "/home/jboyadvance/Documents/Code/Python/Currency Converter/Alpha2/main.py", line 21, in usd_callback
    euro_exchange = float(str(tree.xpath('//div[@class="price"]/text()')))
ValueError: could not convert string to float: "['1.1394']"

当我尝试euro_exchange = tree.xpath('//div[@class="price"]/text()') float(str(euro_exchange)时,我得到了同样的结果。

当我尝试euro_exchange = float(tree.xpath('//div[@class="price"]/text()')

代码语言:javascript
运行
复制
Exception in Tkinter callback
Traceback (most recent call last):
  File "/usr/lib/python3.5/tkinter/__init__.py", line 1562, in __call__
    return self.func(*args)
  File "/home/jboyadvance/Documents/Code/Python/Currency Converter/Alpha2/main.py", line 21, in usd_callback
    euro_exchange = float(tree.xpath('//div[@class="price"]/text()'))
TypeError: float() argument must be a string or a number, not 'list'

下面是源代码:

代码语言:javascript
运行
复制
import tkinter as tk
from lxml import html
import requests

window = tk.Tk()

window.title("Currency Converter")

window.geometry("500x500")

window.configure(bg="#900C3F")

# window.wm_iconbitmap("penny.ico")

page = requests.get('https://www.bloomberg.com/quote/EURUSD:CUR')
tree = html.fromstring(page.content)


def usd_callback():
    usd_amount = float(ent_usd.get())
    euro_exchange = float(str(tree.xpath('//div[@class="price"]/text()')))

    euro_amount = usd_amount / euro_exchange

    lbl_euros.config(text="Euro Amount: %.2f€" % euro_amount)


lbl_usd = tk.Label(window, text="Enter the USD ($) here:", bg="#900C3F", font="#FFFFFF")
ent_usd = tk.Entry(window)

btn_usd = tk.Button(window, text="Convert", command=usd_callback, bg="#FFFFFF", font="#FFFFFF")

lbl_euros = tk.Label(window)

lbl_usd.pack()
ent_usd.pack()

btn_usd.pack()

window.mainloop()

如有任何帮助,我们将非常感谢!谢谢你!!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-11 13:05:59

您需要从xpath的返回值转换第一个元素:

代码语言:javascript
运行
复制
euro_exchange = tree.xpath('//div[@class="price"]/text()')
euro_exchange = float(str(euro_exchange[0]))
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45025360

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档