如何使用多个print语句生成的python输出?

时间:2012-03-20 00:45:34

标签: python

我有一个生成大量输出的函数,比如

A: {B:1,C:0,D:3}
B: {A:1,C:0,D:3}
C: {B:1,A:0,D:3}
D: {B:1,C:0,A:3}

min = 0, x = A, y = C, new = AC

AC: {B:1,D:3}
B: {AC:1,D:3}
D: {B:1,AC:0}

min = 0, x = B, y = AC, new = ACB

基本上,我使用一个函数(为了论证,我们称之为'fun1'),它生成如上所示的输出类型。

我正在寻找像data1 = fun1(输入)这样的东西,然后使用这个变量作为另一个函数的输入,以及其他一些输入。

那我该如何利用这些信息呢?我习惯于处理列表,字典和什么不是,作为函数的输出。我试图访问信息,以便我可以找到某些信件与他人之间关系的某些信息。此外,上面的输出量只是2个字母列表,但这完全是任意的。

请帮助:)

1 个答案:

答案 0 :(得分:3)

我不清楚为什么你有一个打印出大量数据的函数而不是将它作为一个可用的python对象返回。如果你控制了这个功能(它是你的,你写的那个),那么它应该做这样的事情(请记住,这不管效率或其他什么。只是试着让你变得简单)... < / p>

def fun1():

    allresults = []

    # do you loop and generate objects like
    results = {
        "A": {"B":1,"C":0,"D":3},
        "B": {"A":1,"C":0,"D":3},
        "C": {"B":1,"A":0,"D":3},
        "D": {"B":1,"C":0,"A":3},
        "min": 0,
        "x": "A",
        "y": "C",
        "new": "AC" 
    }

    # and add them to your list
    allresults.append(results)

    return allresults

然后当你运行你的函数时,你会得到一个返回值:

data = fun1()

如果您无法控制此函数的源(它是其他一些奇怪编写的库的一部分),那么唯一干净的方法是在另一个进程中运行它并读取stdout。然后将其解析为可用的东西。否则你在谈论在运行这个功能时暂时重定向stdout管道,但我甚至不敢去那里。

更新

在你的评论中,你说这是其他图书馆的一部分。您最好的选择是对此代码进行更改并使其正确返回其数据,以便其可重用。这里最大的问题是,即使是通用格式,所打印的内容也是如此。至少它可能会抛弃JSON或类似的东西,以便被另一个进程解析。