【问题标题】:Don't understand why this TypeError: must be str, not float exception occurs不明白为什么会出现这个 TypeError: must be str, not float 异常
【发布时间】:2017-04-27 11:24:56
【问题描述】:
st1= str()
c1= str()
c2= str()
EndCash = float()

page = requests.get('http://www.xe.com/currencyconverter/convert/?Amount=' +
                    str(st1) + '&From=' + (c1) + '&To=' + (c2))
tree = html.fromstring(page.content)
rate = tree.xpath('//span[@class="uccResultAmount"]/text()')
symbol = tree.xpath('//span[@class="uccToCurrencyCode"]/text()')

EndCash = rate + symbol

我正在使用requests 模块和lxml 从互联网上获取货币汇率。这样做时我遇到了问题。我收到must be str, not float 错误。我将这行代码用于tkinter 中的标签,因此其输出(EndCash)应该出现在标签中。此代码独立工作,但在 tkinter 中不起作用

>>>TypeError: must be str, not float

在第一个声明中。

【问题讨论】:

  • 哪一行会报错?你有堆栈跟踪吗?
  • 错误来自页面 = requests.get('xe.com/currencyconverter/convert?amount=' + str(st1) + '&From='+(c1) +'&To=' + (c2))
  • @xys234:你确定是哪一行导致了错误吗?据我所知,该语句中没有任何内容可能导致这种错误,因为所有这些变量(st1c1c2都是字符串。请edit您的问题并添加完整的追溯。

标签: python string web web-scraping


【解决方案1】:

像这样你的代码应该可以工作,你必须在定义它们之后将浮点数转换为字符串

page = requests.get('http://www.xe.com/currencyconverter/convert/?Amount=' + str(st1) + '&From='+str(c1) +'&To=' + str(c2))
tree = html.fromstring(page.content)
rate = tree.xpath('//span[@class="uccResultAmount"]/text()')
symbol = tree.xpath('//span[@class="uccToCurrencyCode"]/text()')

EndCash = str(rate + symbol)

【讨论】:

  • 错误来自页面 = requests.get('xe.com/currencyconverter/convert?amount=' + str(st1) + '&From='+(c1) +'&To=' + (c2))
  • 您的答案中的代码和 OP 的问题不是有效的 Python。
  • 什么意思? @martineau
  • 最后四个语句的缩进错误。
  • 我无法编辑他的答案,但我现在是正确的@martineau
猜你喜欢
  • 2020-11-10
  • 1970-01-01
  • 2019-09-28
  • 2012-12-04
  • 1970-01-01
  • 2014-03-08
  • 2017-08-12
相关资源
最近更新 更多