Python:将带有逗号分隔符和点的字符串转换为浮点数

目录

Python: Convert string with comma separator and dot to float

  1. 将带逗号分隔符和点的字符串转换为浮点数
  2. 使用 replace() 将带有逗号分隔符和点的字符串转换为浮点数

Python:将带逗号分隔符和点的字符串转换为浮点数

要将带有逗号分隔符和点的字符串转换为浮点数:

  1. 使用locale.setlocale()方法将语言环境设置为en_US.UTF-8
  2. 使用该locale.atof()方法将字符串转换为浮点数。
主程序
import locale # ✅ Convert string with comma separator and dot to float (locale.atof()) locale.setlocale(locale.LC_ALL, 'en_US.UTF-8') my_str = '456,789.4567' result = locale.atof(my_str) print(result) # 👉️ 456789.4567

该示例使用该locale.atof()方法将带有逗号和点的字符串转换为浮点数。

我们使用
locale.setlocale()
方法将语言环境设置为
en_US.UTF-8.

主程序
import locale locale.setlocale(locale.LC_ALL, 'en_US.UTF-8')

setlocale()方法采用类别和语言环境。

类别locale.LC_ALL设置所有类别的语言环境。

使用用户的首选语言环境

您还可以将语言环境设置为空字符串以使用用户的首选语言环境。

主程序
import locale # ✅ Convert string with comma separator and dot to float (locale.atof()) locale.setlocale(locale.LC_ALL, '') my_str = '456,789.4567' result = locale.atof(my_str) print(result) # 👉️ 456789.4567


locale.LC_ALL
属性设置为空字符串时,将使用用户的首选语言环境。

美国的千位分隔符是逗号,所以我们将参数设置为locale

locale.atof方法接受一个字符串并将其转换
为浮点数。

主程序
import locale locale.setlocale(locale.LC_ALL, '') my_str = '456,789.4567' result = locale.atof(my_str) print(result) # 👉️ 456789.4567
确保setlocale()在调用方法之前使用该方法 locale.atof()

如果字符串具有下划线分隔符而不是逗号,则此方法也适用。

主程序
import locale locale.setlocale(locale.LC_ALL, '') my_str = '456_789_123.4567' result = locale.atof(my_str) print(result) # 👉️ 456789123.4567

或者,您可以使用该str.replace()方法。

Python:使用 replace() 将带有逗号分隔符和点的字符串转换为浮点数

这是一个两步过程:

  1. 使用该str.replace()方法从字符串中删除逗号。
  2. 使用该类float()将字符串转换为浮点数。
主程序
my_str = '456,789.4567' result = float(my_str.replace(',', '')) print(result) # 👉️ 456789.4567

str.replace方法返回字符串的副本,其中所有出现的子字符串都被提供的替换项替换

该方法采用以下参数:

姓名 描述
老的 字符串中我们要替换的子串
新的 每次出现的替换old
数数 count只替换第一次出现的(可选)

该方法不会更改原始字符串。字符串在 Python 中是不可变的。

从字符串中删除逗号后,我们可以使用该类将其转换为浮点数。 float()

请注意,在某些地区,逗号用作千位分隔符(例如在美国),而在其他一些地区,逗号用作小数点分隔符(例如法国)。

如果使用逗号作为小数点,则调用该replace()方法两次。

主程序
my_str = '456.789,4567' result = float(my_str.replace('.', '').replace(',', '.')) print(result) # 👉️ 456789.4567

第一次调用该方法会从字符串中replace删除句点。.

第二次调用用句点替换逗号。

额外资源

您可以通过查看以下教程来了解有关相关主题的更多信息: