2016-04-21 37 views
0

我有一個文本文件,下令這樣的座標:閱讀文本文件中的行和存儲到結構當作繪製

A,1,1 

B,1,5 

C,3,7 

D,5,5 

E,5,1 

這封信是一個節點標籤,第一個數字是x座標,第二個數字是y座標。

我試圖將這些「節點」存儲爲不同數組的片段(即字母標籤存儲在一個數組中的元素位置,x座標存儲在匹配元素位置的數組中,y座標是存儲到匹配元件位置)

所以對於我的第一節點我會:

A是在位置0中nodeLabel[]

1是在位置0中xCoord[]

1位於位置0 yCoord[]

這涉及到我理解的一些概念。首先,我需要打開文件並從中讀取。

  • 的文件需要被讀取多達逗號或\ n和存儲的值

  • 然後,它需要切換陣列和讀直到下一個逗號或\ n 並存儲值。

  • 然後它需要切換數組並讀取下一個逗號或\ n 並存儲這些值。

  • 如果.read功能擊中一個新的生產線則需要去 下一行

我的問題是,我不知道如何來告訴Python,我想具體存儲的值以及它們應該存儲在哪個數組中。我發現了一些關於使用split()函數的信息。這會讓我告訴read()函數什麼時候停止?

現在我有這樣的:

def file_stuff(): 
with open('Offices.txt') as input_data: 
    for line in input_data 
     if line.strip() == ',', '\n': 
      break 
     elif 

我不知道以什麼作爲要麼把我elif條件。

這樣做會更有意義,因爲我將不得不實現一個GUI來繪製節點圖形?

回答

1

事情是這樣的:

def file_stuff(): 
    nodes = [] 
    X = [] 
    Y = [] 
    with open('Offices.txt') as input_data: 
     for line in input_data: 
      n, x, y = line.split(',') 
      nodes.append(n) 
      X.append(int(x)) 
      Y.append(int(y)) 

這是簡單的,因爲它不檢查輸入文件的有效性,但應該做你想要的東西,如果文件格式正確無誤。 另一個問題是,你的函數不返回任何值,如果你想要做進一步的操作,你應該加入類似:

return (n, X, Y) 
+0

如果這些空間在這裏,如果我的文本文件有沒有? 'n,x,y = line.split(',')' 添加返回命令是否允許我在函數之外操作x和y? – arj

+1

這些空格僅用於代碼的可讀性,並且在Python程序中沒有功能(除非它在字符串中)。在處理更復雜的問題之前,您應該先從基本的Python教程開始,從語法開始。 – Cyb3rFly3r

+0

我一直在經歷一個教程,我不幸的是時間不足。無論哪種方式,我認爲我現在明白了這一點,打印出列表後會做什麼追加。有沒有辦法將這些轉換爲節點結構,這樣我就可以用networkx來描繪它們了? – arj