在 中Python 3.5
,我想使用locale.atof
以下代码将德语数字字符串转换为浮点数:
import locale
from locale import atof
locale.setlocale(locale.LC_ALL, 'de_DE')
number = atof('17.907,08')
Run Code Online (Sandbox Code Playgroud)
然而,这提出了一个ValueError
:
ValueError: could not convert string to float: '17.907.08'
Run Code Online (Sandbox Code Playgroud)
atof()
为了这个而生的吗?
数字中不能有多个点 ( .
) 或逗号 (,
) ,因为这两种符号都用于atof()
分隔数字的小数部分和整数部分。
由于 Python 不需要点来正确表示您的数字,因此您应该删除它们并只保留逗号:
import locale
from locale import atof
locale.setlocale(locale.LC_ALL, 'de_DE')
string_nb = '17.907,08'
string_nb = string_nb.replace('.', '')
number = atof(string)
Run Code Online (Sandbox Code Playgroud)