2013-06-27 95 views
0

所以我想做出會從文本文件導入數據,並在這裏與matplotlib繪製它是我迄今爲止代碼:與數據導入代碼問題

import matplotlib.pyplot as plt 


x = [] 
y = [] 

readFile = open ('C:/Users/Owner/Documents/forcecurve.txt', 'r') 

sepFile = readFile.read().split('\n') 

readFile.close() 

for plotPair in sepFile: 
    xAndY = plotPair.split('\t') 
    x.append(int (xAndY[0])) 
    y.append(int (xAndY[1])) 
print x 
print y 

plt.plot (x, y) 



plt.xlabel('Distance (Nanometers)') 
plt.ylabel('Force (Piconewtons)') 

plt.show() 

一旦運行此我得到錯誤

ValueError: invalid literal for int() with base 10: '1,40.9' 

回答

0

您的文件似乎是逗號分隔(1,40.9),而不是製表符分隔的,所以你需要用逗號,而不是標籤分裂。更改

xAndY = plotPair.split('\t') 

xAndY = plotPair.split(',') 

或者,它可能是更容易使用csv模塊讀取文件。舉個簡單的例子:

import csv 

readFile = open ('C:/Users/Owner/Documents/forcecurve.txt', 'r') 

x = [] 
y = [] 

r = csv.reader(readFile) 
for x1, y1 in r: 
    x.append(int(x1)) 
    y.append(int(y1)) 

readFile.close() 
+0

在Python 3.x中,總是使用'​​newline ='''選項和'open'([docs](http://docs.python.org/3.3/library/) csv.html#csv.reader))用於'csv'時。在Python 2.X中,使用'rb'([docs](http://docs.python.org/2/library/csv.html#csv.reader))。 –