python中与区域设置无关的字符串到浮点的转换

python中与区域设置无关的字符串到浮点的转换,python,locale,string-conversion,Python,Locale,String Conversion,我需要将字符串转换为float,但可以有不同的输入字符串格式,例如'1234,5'或'1234.5'或'1234,5'或'1234.5'或其他任何格式。我不能更改区域设置十进制指针或千位分隔符,因为我可能不知道我将提前获得什么数据 有没有一种方式、方法或库可以在不知道使用哪种语言环境的情况下解析和转换这种特定于语言环境的值 另外,对于相同的日期问题,是否存在任何解决方案 TIA。您可以对哪个字符是千位分隔符,哪个是小数点进行一些假设。但是,在某些情况下,您无法确切知道该怎么办: 查找最后一个字

我需要将字符串转换为float,但可以有不同的输入字符串格式,例如
'1234,5'
'1234.5'
'1234,5'
'1234.5'
或其他任何格式。我不能更改区域设置十进制指针或千位分隔符,因为我可能不知道我将提前获得什么数据

有没有一种方式、方法或库可以在不知道使用哪种语言环境的情况下解析和转换这种特定于语言环境的值

另外,对于相同的日期问题,是否存在任何解决方案


TIA。

您可以对哪个字符是千位分隔符,哪个是小数点进行一些假设。但是,在某些情况下,您无法确切知道该怎么办:

  • 查找最后一个字符
    。如果多次出现,则该数字没有小数点,该字符是千位分隔符
  • 如果字符串正好包含其中一个,则最后一个为小数点
  • 如果字符串只包含一个点/逗号,那么您就很倒霉了:
    123.456
    123456
    可能是数字
    123456
    123.456
    。但是,对于像
    123.45
    这样的数字,即潜在千位分隔符后面的位数不是三的倍数,可以假定它是小数点

我自己不想对文本进行任何启发式分析,因为这可能会导致不可预测的结果。如果有一个库来做这件事,那将是我的选择。字符串是否总是有某种小数分隔符?它们应该有,但它们也可能不正确,小数位数是否可以超过两位?如果是这样的话,那么你的问题就无法解决,因为总是会有不明确的情况。没有图书馆能帮你做到这一点!您所能做的最好的事情就是转换所有明确的案例,然后报告不明确的案例,并提供可能的选项,以确定数量。例如,
1234
不明确,可能是
1234.00
1.234
Hm,我会考虑提出最低限度的有效变更,谢谢。