【问题标题】:Python - converting multiple lines to onePython - 将多行转换为一行
【发布时间】:2014-09-28 02:05:45
【问题描述】:

我有一个关于我编写的一些 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]。相反,我收到多行字符,即:

1

4

我想知道如何纠正这个问题?

【问题讨论】:

  • 您正在单独打印y,这将导致每次迭代产生一个新行。相反,先附加到列表,然后在末尾打印列表。
  • 你也可以使用print y,来打印一个空格而不是换行符,或者累积一个字符串来指出等等。但是如果你想打印一个列表,显而易见的事情是正如@JesseMu 所说,创建一个列表。

标签: python function output


【解决方案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 调用该函数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-22
    • 2020-05-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多