python - 将解析数字格式化为 float()

标签 python python-3.x

我正在解析银行的网站以获取汇率。

但是它们返回的格式是“61,8000”并且它是一个字符串。

我尝试过 float() 但它抛出了一个错误。

我最后尝试的是:

sell = "{:10.6f}".format( e.select_one('.prodazenVal').text.strip() )
buy = "{:10.6f}".format( e.select_one('.kupovenVal').text.strip() )
middle = "{:10.6f}".format( e.select_one('.sredenVal').text.strip() )

我收到以下错误:

Traceback (most recent call last):
  File "jobs/fetchExchangeRate.py", line 28, in <module>
    sell = "{:10.4f}".format( e.select_one('.prodazenVal').text.strip() )
ValueError: Unknown format code 'f' for object of type 'str'
<小时/>

我想得到:“61.8000”

有什么建议吗?

最佳答案

您可以使用Python更改为locale使用逗号作为小数点分隔符,例如俄语,如下所示:

import locale
locale_backup = locale.getlocale(locale.LC_NUMERIC)
locale.setlocale(locale.LC_NUMERIC, locale='ru_RU')

sell = "{:10.6f}".format(locale.atof(e.select_one('.prodazenVal').text.strip()))
buy = "{:10.6f}".format(locale.atof(e.select_one('.kupovenVal').text.strip()))
middle = "{:10.6f}".format(locale.atof(e.select_one('.sredenVal').text.strip()))

locale.setlocale(locale.LC_NUMERIC, locale_backup)

locale.atof 方法可用于将本地化数字字符串转换为 float 。

关于python - 将解析数字格式化为 float(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57741446/

相关文章:

java - 不使用 getter 和 setter 时的文档

python - 为什么这段代码表现得好像陷入了无限循环?

python - ElasticSearch-过滤嵌套对象而不影响 “parent”对象

linux - 在 Ubuntu 上为 libtorrent 安装 Python3 绑定(bind)

python - 权限错误 : [Errno 13] Permission denied Flask. 运行()

python - 将队列与 tkinter(和线程)一起使用

python - 找到抓取网站的正确元素

python - Python 中快速简单的文件对话框?

python - 复杂阵列的智能打印

python - 仅当满足一个条件时如何查找字符串并从数据帧中的单元格中删除值而不是行本身?