首页 > 解决方案 > 读取转换为数字的科学计数法字符串的 txt 文件

问题描述

我有一个正在读取的 .txt 文件,它看起来像这样:

-1.000000000000000000e+01 4.495406013054247296e+02
-9.933110367892975745e+00 7.574962784496592576e+02
-9.866220735785953266e+00 9.492438285952409842e+02
-9.799331103678929011e+00 1.096930466897883889e+03
...

我正在将其读入二维数组,然后放入单独的列数组中。当我这样做时,我收到一个错误并且不知道该怎么做。

with open("hw2_data.txt", "r") as dataFile: 
    data = [line.split() for line in dataFile]
i = 0
x = []
y = []
for line in lines: 
    x.append(int(data[i][0]))
    y.append(data[i][1])
    i = i + 1
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-30-b77a8a85fae8> in <module>()
      3 y = []
      4 for line in lines:
----> 5     x.append(int(data[i][0]))
      6     y.append(data[i][1])
      7     i = i + 1

ValueError: invalid literal for int() with base 10: '-1.000000000000000000e+01'

这个问题的解决方案是什么?在这里接触 python 几天,也希望得到解释!

标签: pythonstringfiletypes

解决方案


问题已解决,但此答案将在任何来到这里遇到相同问题的用户时更新。问题在于,如果将浮点数的字符串表示形式传递给 int,或者将除整数以外的任何字符串表示形式(包括空字符串)传递给整数,则会引发 ValueError。如果您确实想将浮点数的字符串表示形式传递给 int,则可以先转换为浮点数,然后再转换为整数:

下面的代码应该向您展示您的输入出了什么问题。

>>> int('5')
5
>>> float('5.0')
5.0
>>> float('5')
5.0
>>> int(5.0)
5
>>> float(5)
5.0
>>> int('5.0')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: '5.0'
>>> int(float('5.0'))
5

正如您在评论中提到的那样,转换为 float 而不是 int 也可以,就像这样。

x.append(float(data[i][0]))

你可以在这里阅读更多关于它的信息


推荐阅读