【问题标题】:Python to figure out all paths via parsingPython通过解析找出所有路径
【发布时间】:2013-10-24 14:11:46
【问题描述】:

我有一个问题,我以前从未处理过,但是在这里

我有不同的任务,当执行一个任务时,执行下面的任务等等,所以结构是这样的:

所以现在我有了带有

的文本文件
Name, Path, Time
D : A/B/C/D, -
A : A, 3 PM
B : A/B, -
Z : A/B/C/D/Z, - 
E : E, 4 PM
F : E/r/f, -
G : G, 5 PM
X : A/X, -
O : A/B/O, -

如何让它像时间一样打印

3 -> A
     A -> B -> C -> D -> Z
     A -> B -> O
     A -> X

4 -> E
     E -> r -> F

5 -> G

我想确定 B->C 和 B->D 是否都以某种方式显示,就像所有可能经过此 A、E、G 和 ... 等的路径。

编辑:如果问题太基本,你能把我引向正确的方向吗?

【问题讨论】:

  • 我不明白文件的结构。 (这个问题也没想到……)
  • 嘿,我怎么能说所有顶级的,比如 A,E,G ?我怎样才能找到遵循它的所有路径,如果我选择 A,我应该从 A 获取所有路径。
  • 这是一个图表问题吗?你看过networkx吗?
  • @RyanLuke 抱歉,但我还是不明白。顶层由PM 标记?为什么不在您的示例中列出A -> B -> C -> D -> ZA

标签: python parsing data-structures tree logic


【解决方案1】:
inp = """
D : A/B/C/D, -
A : A, 3 PM 
B : A/B, - 
Z : A/B/C/D/Z, 
E : E, 4 PM 
F : E/r/f, - 
G : G, 5 PM """

trans_1 = [ele.split(":")[1].strip().split(",") for ele in inp.splitlines() if ele]

trans_2 = [(ele[0].strip().replace("/", "->"), ele[1].strip()) for ele in trans_1]

#_dict = {} 

for ele in trans_2:
    if ele[1] != "-":
        #_dict[ele[1]] = []
        print ele[1], "->", ele[0]
        for inner_ele in trans_2:
            if ele[0] == inner_ele[0][0]:
                #_dict[ele[1]].append(inner_ele[0])
                print "\t", inner_ele[0]

# print _dict

输出:

3 PM -> A
        A->B->C->D
    A
    A->B
    A->B->C->D->Z
-> A->B->C->D->Z
4 PM -> E
    E
    E->r->f
5 PM -> G
    G

【讨论】:

  • 如果你想做更多的事情或修改,请使用评论的_dict
  • 嘿,谢谢,但它应该为 A 完成所有路径,而不仅仅是 A-> A/B/C/D。谢谢
  • 你看到这个的输出了吗? (更新了帖子)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-01-21
  • 1970-01-01
  • 2017-08-25
  • 1970-01-01
  • 2015-11-25
  • 1970-01-01
  • 2015-06-09
相关资源
最近更新 更多