2017-03-02 61 views
0

我有一个以.txt文件编码的图(约24k行)。每行都是sourceNode:destinationNode:edgeWeight替换文件的一部分行

我需要将某个节点折叠到超级节点中。我有一本字典,其中每个元素的形式为 "superNodeName : listOfnodeNamesToCollapseIntoThisSupernode"(该字典有10个元素)。我认为“修改”图形的最好方法是在.txt文件上工作。

如何用节点名替换节点名称文件中的每一处出现?

回答

0
# Your super node dictionnary 
super_node = {'name': [...]} 

new_text = '' 

# Open your txt file 
with open('test.txt') as f: 
    for line in f.readlines(): 
     # Split each line 
     splitted = line.split(':') 

     for n, n_list in super_node.items(): 
      if splitted[0] in n_list: # Source is in super node 
       splitted[0] = n # Replace node name 
      if splitted[1] in n_list: # Destination is in super node 
       splitted[1] = n # Replace node name 

     # Add to new text 
     new_text += '{0}\n'.format(':'.join(splitted)) 

# Write text file 
with open('text.txt', 'w') as f: 
    f.write(new_text) 
+0

线'n个,n_list在super_nodes:'给错误ValueError异常:值过多解压。也许我需要使用'super_nodes.items()。做到这一点'new_text.append'给出错误,因为str对象不具有追加方法 – viral

+0

@viral我修正了它 – cyprieng

+0

它现在有效。谢谢<3 – viral