2014-09-28 5 views
0

У меня есть вопрос по поводу каких-то питона код, который я написал: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

+0

Вы также можете использовать 'print y,' для печати пробела вместо новой строки или накапливать строку, чтобы указать, и т. Д. Но если вы хотите распечатать список, очевидно, что нужно создать список, так как @JesseMu говорит. – abarnert

ответ

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.

Смежные вопросы