2017-08-10 34 views
-1

我有一個data.txt中爲:如何將數字與我的列表中的科學記數法表示的每個元素相乘?

1.30000E+01 7.49106E+01 

1.40000E+01 7.24673E+01 

...

我要乘以2的第一列這裏是我的代碼:

with open("data.txt") as f: 
data = f.readlines() 

xtemp = [row.split()[0] for row in data] 
y = [row.split()[1] for row in data] 
x = [i * 2 for i in xtemp] 

錯誤信息

eError: invalid literal for float():1.30000E+011.30000E+01

+1

至少有一個沒有空格分隔的數字。 – user2357112

+1

@ user2357112這是不正確的。它會打印兩次,因爲當您將一個字符串乘以兩個字符串時,它會將其連接到自身。 –

+1

請正確地縮進你的代碼後'與' – Mangohero1

回答

3

從a讀取的數據文件的類型是字符串。你需要轉換爲浮動繁殖:

x = [float(i) * 2 for i in xtemp] 

import io 

filedata = """1.30000E+01 7.49106E+01 
1.40000E+01 7.24673E+01""" 

data = [i.strip("\n") for i in io.StringIO(filedata).readlines()] 

xtemp = [row.split()[0] for row in data] 
y = [row.split()[1] for row in data] 
xtype = [type(i) for i in xtemp] # [str,str] <-- here is your problem 
x = [float(i) * 2 for i in xtemp] 


x 

返回你的輸入線

[26.0, 28.0] 
+0

這工作完美!非常感謝你! –

+0

@ H.Y.Long我很高興我能幫上忙! –

相關問題