ValueError: 无法将字符串转换为浮点数: '' 在 Python 3 中

2024-01-30

我正在用 Python 编写一个小机器人,但遇到了问题。这似乎是一个常见问题,但我从未见过它在我所处的情况下被问到。

好的,这是提出问题的代码:

old_values = float((removeprc(browser.find_element_by_xpath('//*[@id="draggableNavRightResizable"]/section/section[2]/section[1]/div[3]/ul/li[1]/div[2]/div[6]/span').text)))

browser.find_element_by_xpath('//*[@id="draggableNavRightResizable"]/section/section[2]/section[1]/div[3]/ul/li[1]/div[2]/div[6]/span').text)是一个用于获取网站价值的selenium工具。正如您稍后将看到的,检索到的元素是一个应该与 float() 一起使用的数字 “remove prc”是我创建的一个小函数,用于删除数字的%,如下:

def removeprc(string): #removes the % from a string 
    string = str(string)
    list = string.split('%')
    string = " ".join(list)
    
    return string

这可能不是最好的方法,但当我单独测试时它是有效的。

无论如何,这是我运行整个代码时得到的结果

loading page ...
page loaded
acquiring values ...
values acquired
running eth trade
-0.37
Traceback (most recent call last):
  File "C:\Users\pc adam\Documents\EISTI\algoprog\perso\python\fichiers\btc\ETHtradingbotV1.py", line 138, in <module>
    profit = float(browser.find_element_by_xpath('/html/body/div[3]/section[16]/section[2]/section[2]/section[2]/div/div[1]/table/tbody/tr/td[15]/span').text)
ValueError: could not convert string to float: ''

前5行没用。在第六行,我打印了我想要获取 float() 的内容 的。正如您所看到的,它应该可以工作并且......它确实可以!有时。

这是最奇怪的事情,它有一半的时间运行得很好! 我在互联网上读到,如果您尝试 float() 不是数字的东西或者其中有奇怪的东西(例如空格),就会发生这种情况。正如你所看到的,我认为这里的情况并非如此。

当我尝试通过运行程序的简化版本来隔离问题时,如下所示:

a = "-0.06%"
def removeprc(string): #removes the % from a string 
    string = str(string)
    list = string.split('%')
    string = " ".join(list)
    return string

b = float(removeprc(a))
print(b)

它输出-0.06并且工作完美???

所以我真的被困在这里了。它应该有效,但事实并非如此。即使最糟糕,它也有效有时, 没原因。当我隔离问题时,它工作得很好。

任何帮助将不胜感激!

哦,如果你想看entire代码,在这里:https://github.com/Madaxuorel/proj-ethTB/blob/master/ETHtradingbotV1.py https://github.com/Madaxuorel/proj-ethTB/blob/master/ETHtradingbotV1.py


这个错误信息...

ValueError: could not convert string to float: ''

...意味着Python解释器无法将字符串转换为浮点数。


你已经足够接近了。text方法将返回一个string并剥离%, 代替string.split('%')你要list = string.split('%')[0].

一个例子:

my_percentage = "99%"
my_string_num = my_percentage.split("%")[0]
print(my_string_num)

prints:

99

更远,find_element_by_xpath()将仅识别单个元素,并使用text你会得到一个string, so string = " ".join(list)似乎多余。

如此有效地剥离%,转换string to float并打印,您的有效代码行将是:

print(float(browser.find_element_by_xpath('//*[@id="draggableNavRightResizable"]/section/section[2]/section[1]/div[3]/ul/li[1]/div[2]/div[6]/span').text.split("%")[0]))

Update

您仍然会看到错误,因为具有所需文本的元素尚未在DOM当调用该代码行时。作为解决方案,您需要诱导WebDriver等待为了visibility_of_element_located()你可以使用以下内容定位策略 https://stackoverflow.com/questions/48369043/official-locator-strategies-for-the-webdriver/48376890#48376890:

print(float(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//*[@id='draggableNavRightResizable']/section/section[2]/section[1]/div[3]/ul/li[1]/div[2]/div[6]/span"))).text.split("%")[0]))

Note:您必须添加以下导入:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ValueError: 无法将字符串转换为浮点数: '' 在 Python 3 中 的相关文章

随机推荐

  • 带 DatePicker 的 AlertDialog

    我的想法是使用 AlertDialog 并将其设置为 DatePicker 我的代码是 AlertDialog Builder builder new AlertDialog Builder this DatePicker picker n
  • PLCrashReporter - 如何符号化进程中的崩溃数据?

    在我们获得崩溃数据后 有没有办法对崩溃报告进行符号化 目前 这就是我在handleCrashReport方法中所做的事情 PLCrashReportTextFormat textFormat PLCrashReportTextFormati
  • Android 在 Google 地图中进行捏合缩放

    谷歌地图中的捏缩放功能是否可行 我进行了多次搜索但没有得到任何解决方案 请给出您的看法 或者需要编写api来实现这些功能 您是否使用 ScaleGestureDetector 来实现捏合和缩放 http developer android
  • 我的 Android 设备上的多个编码器支持 Mime 类型视频/avc

    当我枚举设备上的所有媒体编解码器时 我注意到以下编码器支持 mime 类型 video avc OMX qcom video encoder avc OMX google h264 encoder 你打电话时MediaCodec Creat
  • 如何高效找到重叠区间?

    我有以下玩具示例数据框 df f low f high 0 476201 0 481915 0 479161 0 484977 0 485997 0 491911 0 503259 0 508679 0 504687 0 510075 0
  • 尝试在 C# 中的 UInt16 上执行按位非 (~) 时出错

    出于某种原因 我根本不理解 或不明白 为什么这是有效的 UInt32 a 0x000000FF a UInt32 0x00000001 但这并没有 UInt16 a 0x00FF a UInt16 0x0001 它给出错误 常量值 某些数字
  • 如何处理 上的点击而不是子元素上的点击?

    我用以下代码处理点击 带输入的表 table tr td td tr table
  • sass 会损害性能吗?

    我一直在教育自己 阅读this http code google com speed page speed docs rendering html 引擎从右到左评估每个规则 从最右边的选择器 称为 键 开始并遍历每个选择器 直到找到匹配或丢
  • 如何为 Windows Phone 8 应用程序创建图表/图形? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我想在Windows Phone 8 应用程序 图表 图表 http img837 imageshack
  • 使您的 .NET 语言在调试器中正确运行

    首先 我对这个问题的长度表示歉意 我是作者钢铁计划 http ironscheme codeplex com 最近 我一直在努力发出合适的调试信息 以便我可以使用 本机 NET 调试器 虽然这取得了部分成功 但我遇到了一些初期问题 第一个问
  • AJAX HTML PHP 问题

    这是我的scripts js function showHint str if str length 0 document getElementById txtHint innerHTML return if window XMLHttpR
  • Haskell 中的链接/组合类型类

    假设我有两个定义如下的类型类 它们的功能相同但名称不同 class Monad m where gt gt m a gt a gt m b gt m b return a gt m a class PhantomMonad p where
  • 如何从 Excel 连接 Mongodb

    我想使用 excel 宏连接到 mongodb 数据库 有人知道如何完成这个任务吗 外壳方法 几乎所有与命令行交互的内容都可以使用 Shell 进行访问 下面是一个简单的示例 它连接到正在运行的 MongoDB 实例并将查询打印到即时窗口
  • 如何告诉函子模板类用户他必须编写什么函子operator()签名?

    考虑这个使用函子作为模板参数的模板化类的毫无意义的示例 godbolthere https godbolt org z TdeGh7 volatile int a 0 volatile int b 0 template
  • 为什么 Python 中“and”和“or”返回操作数?

    我正在经历 LPTHW 遇到了一些我无法理解的事情 你什么时候会想要你的布尔值and or or返回布尔值以外的东西 LPTHW 文本指出所有语言 如 python 都有这种行为 他的意思是解释语言与编译语言还是鸭子类型与静态类型语言 我运
  • 两个线程之间通信

    我有一个线程 A其中有一个列表 列表保存一些对象 现在我想设计一种机制 通过它我可以向线程发送一些消息A Thread A循环运行 它不等待或睡眠 其他一些线程 B 向线程发送一些消息A和线程A清空其所有队列 如何在线程之间发送消息 cla
  • 为什么 conda 尝试使用 --no-update-dependencies 更新包?

    通常 当我尝试安装新软件包时 conda 也想更新其他软件包 即使我添加了 no update dependency 开关 这些更新似乎是 不必要的 就像大多数时候只有版本号的最后一部分发生了变化 今天我想安装 mpld3 软件包 并且 c
  • 在 /etc/ansible/hosts 文件中指定 docker 容器

    我有一堆或 docker 容器在我的本地机器上运行 并且想在这些容器上测试 ansible 作为我的远程主机 但我还没有找到任何这方面的指南 现在我正在尝试使用以下命令配置单个容器以启用 SSH https docs docker com
  • 删除包含该单词的每一行

    如果该行包含特定单词 例如 我想删除整行 cat If cat 就在这一行 删除整行 Example Before 0123456789 CAT 0912WORDS 53DAD DSFC09243 DOG KLJ0963 CAT 8953
  • ValueError: 无法将字符串转换为浮点数: '' 在 Python 3 中

    我正在用 Python 编写一个小机器人 但遇到了问题 这似乎是一个常见问题 但我从未见过它在我所处的情况下被问到 好的 这是提出问题的代码 old values float removeprc browser find element b