[英]reading a txt file of String of scientific notation converting to numerical
我有一個正在讀取的 .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在這里,也希望得到解釋!
問題已解決,但此答案將在遇到相同問題的任何用戶時更新。 問題在於,如果您將浮點數的字符串表示形式傳遞給 int,或者將除整數(包括空字符串)以外的任何內容的字符串表示形式傳遞給 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]))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.