簡體   English   中英

讀取轉換為數字的科學記數法字符串的txt文件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM