2012-12-18 48 views
0

我試圖讓數據矩陣中的頂部條目(字符串)成爲每列中(數值)數據的其餘部分的變量名稱。我用以下來打開文件並創建矩陣。如何將一個數組的元素用作其餘數據的變量名?

with open('x.dat', 'r') as f: 
    row = 0 
    for line in f: 
     words = line.split(',') 
     for col in range(len(words)): 
      DataMatrix[row][col] = words[col] 
     row += 1 
f.close() 

然而,我不能看到如何把字符串並將它被認爲是將由數字組成的欄填寫數據的「列表」變量名。這比我做得更簡單。任何幫助?

數據文件看起來像:......(似乎無法保證格式正確顯示,但每個[]是行,行堆疊在彼此的頂部)
['%時間','FrameNo','Version','X','Y','Z',...] ['66266.265514','948780','2.5','64','0','30'... ] [66266.298785' , '948785',2.5' , '63', '0', '32',...] ...

+2

我不太明白你的問題。你能給我們一些示例數據和示例輸出嗎? – PeterBB

+0

您的意思是第一行數據是列名稱列表,您希望它成爲腳本中列表變量的名稱,該列表由其餘行中該列中的所有值組成? – martineau

+0

martineau - 確實如此!數據文件的第一行包含字符串條目,我希望它們成爲列表的變量名稱,該列表將包含其列中的所有條目。 – Mark

回答

0

使用int功能

with open('x.dat', 'r') as f: 
    row = 0 
    for line in f: 
     words = line.split(',') 
     for col in range(len(words)): 
      DataMatrix[row][int(col)] = words[int(col)] 
     row += 1 
f.close() 

或者,你可以做一個CSV reader使這個稍微容易一些。

with open('x.dat', 'rb') as csvfile: 
    theReader = csv.reader(csvfile, delimiter=',') 
    row=0; 
    for line in theReader: 
     row+=1 
     for col in range(len(line)): 
      DataMatrix[row][int(col)] = words[int(col)] 
+0

'delimiter =',''是多餘的,並且至少使用'enumerate(theReader,start = 1)'? (但是直到OP澄清 - 我們不知道這是否正確!) –

+0

確實如此,但我傾向於將分隔符作爲選項直到OP給出一個想法。 – PearsonArtPhoto

+0

我正在爲'line.split(',')'作爲贈送? –

1

你在找什麼是vars python的內置函數。這會給你一個代表範圍內變量的dict

我不按照你的例子足以該解決方案添加到它的代碼,但在這裏是用瓦爾一個例子,可以幫助:

# Set up some data (which would actually be read from a file in your example) 
headers = ['item', 'quantity', 'cost'] 
data = [['dress', 'purse', 'puppy'], [1, 2, 15], [27.00, 15.00, 2.00]] 

for i in range(len(headers)): 
    name = headers[i] 
    value = list() 
    for data_item in data[i]: 
    value.append(data_item) 
    # This sets the name of the header to the name of a variable 
    vars()[name] = value 

# Print to prove that vars() worked 
print 'Items', item 
print 'Quantities', quantity 
print 'Costs', cost 

將會產生以下的輸出:

Items ['dress', 'purse', 'puppy'] 
Quantities [1, 2, 15] 
Costs [27.0, 15.0, 2.0] 
相關問題