【问题标题】:While converting a list consist of string into float throws value error: could not convert string to float: '22.52.58.246'. How to convert into float?将包含字符串的列表转换为浮点数时会引发值错误:无法将字符串转换为浮点数:'22.52.58.246'。如何转换成浮点数?
【发布时间】:2021-07-01 05:02:47
【问题描述】:

我需要将列表中的字符串转换为 float 值并将它们附加到新列表中。

但我收到此错误:

ValueError:无法将字符串转换为浮点数:'22.52.58.246'。

如何将它们转换为浮点数?

Time = [
    '22.53.13.106',
    '22.53.13.106',
    '22.53.13.161',
    '22.53.13.161',
    '22.53.13.162'
] 

for i in range(0, len(Time)):
    Time[i] = float(Time[i])

【问题讨论】:

  • 这些值似乎不是字面意义上的数字。您如何期望将非数值转换为字符串

标签: python python-3.x type-conversion


【解决方案1】:

22.53.13.106 不是一个有效的浮点值(a),因为它似乎有多个小数点。它们可能是 IPv4 地址,因为没有单个组件大于 255,但您必须检查产生它们的原因才能确定。

或者,基于它们被称为 Time 的事实,它们很可能是 hh.mm.ss.xxx(xxx = 毫秒),在这种情况下,您需要首先确定您希望它们使用的单位。例如,浮动点小时将类似于:

def hh_mm_ss_MMM_to_hours(arg):
    fields = arg.split(".")
    if len(fields) != 4:
        raise RuntimeError("WTF!")
    ret_val =  int(fields[0])
    ret_val += int(fields[1]) / 60
    ret_val += int(fields[2]) / 60 / 60
    ret_val += int(fields[3]) / 60 / 60 / 1000
    return ret_val

Time=['22.53.13.106', '22.53.13.106', '22.53.13.161', '22.53.13.161', '22.53.13.162']
for time in Time:
    print(f"{time} -> {hh_mm_ss_MMM_to_hours(time)}")

产生:

22.53.13.106 -> 22.88697388888889
22.53.13.106 -> 22.88697388888889
22.53.13.161 -> 22.886989166666666
22.53.13.161 -> 22.886989166666666
22.53.13.162 -> 22.886989444444445

(a) 除非你是那些奇怪的欧洲人之一,他们似乎无法弄清楚小数点和逗号之间的区别:-)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-25
    • 1970-01-01
    • 2014-09-25
    • 2019-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多