Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 解决错误:无法将字符串转换为浮点:';0.1222000000*10e1和#x27;_Python - Fatal编程技术网

Python 解决错误:无法将字符串转换为浮点:';0.1222000000*10e1和#x27;

Python 解决错误:无法将字符串转换为浮点:';0.1222000000*10e1和#x27;,python,Python,我有一张号码表。我想使用它们,所以我尝试使用float命令,但是,当我写: expo2 = ['0.1222000000*10E1', '0.9310000000*10E-1', '0.2580000000*10E1', '0.2580000000*10E1', '0.2580000000*10E1', '0.8850000000*10E-1', '0.8850000000*10E-1', '0.8850000000*10E-1', '0.8850000000*10E0', '0.8850000

我有一张号码表。我想使用它们,所以我尝试使用float命令,但是,当我写:

expo2 = ['0.1222000000*10E1', '0.9310000000*10E-1', '0.2580000000*10E1', '0.2580000000*10E1', '0.2580000000*10E1', '0.8850000000*10E-1', '0.8850000000*10E-1', '0.8850000000*10E-1', '0.8850000000*10E0', '0.8850000000*10E0', '0.8850000000*10E0', '0.8850000000*10E0', '0.8850000000*10E0', '0.1222000000*10E1', '0.9310000000*10E-1', '0.2580000000*10E1', '0.2580000000*10E1', '0.2580000000*10E1', '0.8850000000*10E-1', '0.8850000000*10E-1', '0.8850000000*10E-1', '0.8850000000*10E0', '0.8850000000*10e0', '0.8850000000*10E0', '0.8850000000*10E0', '0.8850000000*10E0']    
我收到了以下错误消息:

print(float(expo2[0]))

如何将这些数字转换为浮点数

去掉
标记。u通过扭曲这些标记中的数字r使其成为字符串 浮子坏了!弦乐 这样做

ValueError: could not convert string to float: '0.1222000000*10e1'

它将工作

列表中的数字格式与Python的float()函数使用的格式不匹配。您应该对字符串进行处理,以便通过它们实际获取浮点数。您的问题的解决方案可能是拆分字符串以表示两个浮点数,然后将它们相乘,如以下代码段所示:

 expo2=[2125*10e1,.........]
 print expo2[0]
现在如果你打电话:

from sys import stderr

callback = lambda x: stderr.write('Invalid floating point number found:{0}'.format(x))

def convert(src, error_callback):
    ret = list()
    for item in src:
        index = item.find('*')
        if index == -1:
            error_callback(item)
            continue
        try: ret.append(float(item[:index]) * (float(item[index+1:])/10))
        except ValueError: error_callback(item)
    return ret
你会得到:

expo2_floats = convert(expo2, callback)

我认为这实际上是正确的公式:

[1.222, 0.09310000000000002, 2.58, 2.58, 2.58, 0.08850000000000001, 0.08850000000000001, 0.08850000000000001, 0.885, 0.885, 0.885, 0.885, 0.885, 1.222, 0.09310000000000002, 2.58, 2.58, 2.58, 0.08850000000000001, 0.08850000000000001, 0.08850000000000001, 0.885, 0.885, 0.885, 0.885, 0.885]
您可以使用eval进行验证:

expo2 = ['0.1222000000*10e1', '0.9310000000*10e-1', '0.2580000000*10e1', '0.2580000000*10e1', '0.2580000000*10e1', '0.8850000000*10e-1', '0.8850000000*10e-1', '0.8850000000*10e-1', '0.8850000000*10e0', '0.8850000000*10e0', '0.8850000000*10e0', '0.8850000000*10e0', '0.8850000000*10e0', '0.1222000000*10e1', '0.9310000000*10e-1', '0.2580000000*10e1', '0.2580000000*10e1', '0.2580000000*10e1', '0.8850000000*10e-1', '0.8850000000*10e-1', '0.8850000000*10e-1', '0.8850000000*10e0', '0.8850000000*10e0', '0.8850000000*10e0', '0.8850000000*10e0', '0.8850000000*10e0']


floats = []
for f in expo2:
    try:
        a, e = f.split("*")
        floats.append(float(a) * float(e))
    except ValueError as e:
        print("Not a float")
print(floats)

[12.22, 0.931, 25.8, 25.8, 25.8, 0.885, 0.885, 0.885, 8.85, 8.85, 8.85, 8.85, 8.85, 12.22, 0.931, 25.8, 25.8, 25.8, 0.885, 0.885, 0.885, 8.85, 8.85, 8.85, 8.85, 8.85]
10e-1
is 1
10e1
is 100:

print(all(a == eval(b) for a,b in zip(floats, expo2)))
True
使用1.0作为系数的表格:

In [25]: 10e-1
Out[25]: 1.0    
In [26]: 10e-2 
Out[26]: 0.1
In [27]: 10e-3
Out[27]: 0.01    
In [28]: 10e1 # 10 * 10^1 -> 10 * 10 
Out[28]: 100.0    
In [29]: 10e2 # 10 * 10^2 -> 10 * 10 * 10
Out[29]: 1000.0   
In [30]: 10e3 # 10 * 10^3 -> 10 * 10 * 10 * 10
Out[30]: 10000.0
如果您有混合物:

1.0 is Coefficient

10 is BASE

N is EXPONENT

1.0*10E-24= 0.000,000,000,000,000,000,000,001 or Yocto

1.0*10E-21= 0.000,000,000,000,000,000,001 or Zepto

1.0*10E-18= 0.000,000,000,000,000,001 or 1 Quintillionth, alto

1.0*10E-15= 0.000,000,000,000,001 or 1 quadrillionth, femto

1.0*10E-12= 0.000,000,000,001 or 1 Trillionth, Pico

1.0*10E-11= 0.000,000,000,01

1.0*10E-10= 0.000,000,000,1

1.0*10E-09= 0.000,000,001 or 1 billionth, nano

1.0*10E-08= 0.000,000,01

1.0*10E-07= 0.000,000,1

1.0*10E-06= 0.000,001 or 1 Millionth, micro

1.0*10E-05= 0.000,01

1.0*10E-04= 0.000,1

1.0*10E-03= 0.001 or 1 thousandth, milli

1.0*10E-02= 0.01 or centi

1.0*10E-01= 0.1 or deci

1.0*10E00= 1 or Units or (V,I,R,P,)(Meter,Liter,Gram,)(Seconds)ƒ(Herz Cycles)

1.0*10E01= 10 or Deka

1.0*10E02= 100 or Hecto

1.0*10E03= 1,000 or Kilo

1.0*10E04= 10,000 or (10K)

1.0*10E05= 100,000 or (100K)

1.0*10E06= 1,000,000 or Mega

1.0*10E07= 10,000,000 or (10M)

1.0*10E08= 100,000,000 or (100M)

1.0*10E09= 1,000,000,000 or Giga

1.0*10E12= 100,000 000,000 or Tera

1.0*10E15= 100,000,000,000,000 or Peta

1.0*10E18= 100,000,000,000,000,000 or Exa

1.0*10E21= 100,000,000,000,000,000,000 or Zetta

1.0*10E24= 100,000,000,000,000,000,000,000 or Yotta

从字符串中删除
*10
,然后尝试转换。您是如何获得stringsI works@HoboSapiens的列表的!谢谢这不起作用@MagaliI试过了,现在我可以在数学函数中使用这个数字…仅仅因为
*
不在字符串中并不意味着它是无效的好点!但在这种情况下,我假设字符串是那种特定的格式。。。根据需要。只需稍加编辑,您就可以将该函数推广到处理其他格式。在您发表评论后,我没想到您会
print('nota float')
!啊,啊,真可惜;-)@GiovanniLombardo,我将添加一个更一般的方法;)
expo2 = ['0.1222000000*10e2', "1.0", "4r", "2.123e4", '0.9310000000*10e-1', '0.2580000000*10e1',"foo"]

floats = []


for f in expo2:
    try:
        a, e = f.split("*")
        floats.append(float(a) * float(e))
    except ValueError:
        try:
            floats.append(float(f))
        except ValueError as e:
            print(e)

could not convert string to float: '4r'
could not convert string to float: 'foo'
[122.2, 1.0, 21230.0, 0.931, 25.8]