2017-03-02 70 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