2014-09-28 70 views
0

我有關於我寫一些Python代碼的一個問題:的Python - 轉換多個線以一個

def read_graph_from_file(filename): 

    txtfile = open(filename, "rU") 

    node_memory = 0 
    neighbour_list = 0 

    for entry in txtfile: 
     entry_without_newline = entry.replace('\n',"") 
     columns = entry_without_newline.replace(','," ") 
     columns = columns.split(" ") 
     number_of_columns = len(columns) 

     if number_of_columns == 2: 
      neighbour_list = columns 
      neighbour_list.sort() 

      if node_memory == float(neighbour_list[0]): 
       y = neighbour_list[1] 
       print y 

我從這個希望的輸出是一個列表,即[1,4]。相反,我收到的字符多行,即:

我不知道我會如何糾正呢?

+2

要打印'y'獨立,這將導致在每次迭代的新線。相反,首先追加到列表,然後在最後打印列表。 – jayelm 2014-09-28 02:07:41

+0

您也可以使用'print y''來打印一個空格而不是一個換行符,或者累積一個字符串來指出等等。但是如果你想打印一個列表,顯然要做的是創建一個列表,如@JesseMu說。 – abarnert 2014-09-28 02:19:39

回答

1

如果你想讓他們在列表中,你將不得不創建一個列表變量,只是你的結果追加到它。一旦你的功能完成,你應該返回這個列表。

def read_graph_from_file(filename): 

    txtfile = open(filename, "rU") 

    node_memory = 0 
    neighbour_list = 0 

    lst = [] 

    for entry in txtfile: 
     entry_without_newline = entry.replace('\n',"") 
     columns = entry_without_newline.replace(','," ") 
     columns = columns.split(" ") 
     number_of_columns = len(columns) 

     if number_of_columns == 2: 
      neighbour_list = columns 
      neighbour_list.sort() 

      if node_memory == float(neighbour_list[0]): 
       y = neighbour_list[1] 
       lst.append(y) 
    return lst 

然後,如果你運行你這樣的功能:

print read_graph_from_file(<fileName>) 

你會得到期望的結果:

[1,4] 

或者,您也可以在結束直接打印結果列表你的功能。然後,您將不必使用print調用該函數。