删除课程内容中的方括号

时间:2019-11-19 18:49:43

标签: python

TextFile contents 我试图通过从文本中读取单个字母来填充各个节点,这确实有效,但不像我希望的那样。当我尝试调用Node的attribute函数以获取内容时,将获得一个['H']而不是H,这使得无法在程序的不同部分进行比较。有没有一种方法可以删除方括号,并且只需在每个节点的内容中输入一个字母即可?

def createLattice():
    test = []
    with open("lattice.txt", 'r') as f:
        for line in f:
            items = line.split()
            test.append(items[0:])

    Node1 = Node(test[0])
    Node2 = Node(test[1])
    Node3 = Node(test[2])
    Node4 = Node(test[3])
    Node5 = Node(test[4])
    Node6 = Node(test[5])
    Node7 = Node(test[6])
    Node8 = Node(test[7])
    Node9 = Node(test[8])
    Node10 = Node(test[9])
    Node11 = Node(test[10])
    Node12 = Node(test[11])
    Node13 = Node(test[12])
    Node14 = Node(test[13])
    Node15 = Node(test[14])
    Node16 = Node(test[15])
    Node17 = Node(test[16])
    Node18 = Node(test[17])

    lattice = {Node1: [Node2, Node6, Node7],
               Node2: [Node1, Node3, Node5, Node8],
               Node3: [Node2, Node4, Node9],
               Node4: [Node3, Node5, Node10],
               Node5: [Node2, Node4, Node6, Node11],
               Node6: [Node5, Node1, Node12],
               Node7: [Node1, Node8, Node12, Node13],
               Node8: [Node2, Node7, Node9, Node12, Node14],
               Node9: [Node3, Node8, Node10, Node15],
               Node10: [Node4, Node9, Node11, Node16],
               Node11: [Node5, Node8, Node10, Node12, Node17],
               Node12: [Node6, Node7, Node11, Node18],
               Node13: [Node7, Node14, Node18],
               Node14: [Node8, Node13, Node15, Node17],
               Node15: [Node9, Node14, Node16],
               Node16: [Node10, Node15, Node17],
               Node17: [Node11, Node14, Node16, Node18],
               Node18: [Node12, Node13, Node17]}

    return lattice

2 个答案:

答案 0 :(得分:1)

您的变量test是一个列表列表,而不是字母。

在这一行:

test.append(items[0:])

您创建一个项目“ slice”,这是它自己的列表,并将其插入到test中。
请注意,append不会串联列表,它只会在列表末尾添加一个新项目(即使该项目本身就是列表)。

有两种方法可以解决您的问题:

  1. 只需要这样删除结肠:

    test.append(items [0])

    这将使test成为字母列表,而不是列表列表。

  2. 如果出于某种原因要保留切片,请使用test中每个列表的第一项来初始化Node对象,如下所示:

    Node1 = Node(test [0] [0])

答案 1 :(得分:0)

问题是[0:]删除了:解决问题的误解。