2017-03-02 4 views
0

私は、.txtファイル(約24k行)でコード化された有向グラフを持っています。すべての行は形式になっていますsourceNode:destinationNode:edgeWeightファイルの行の一部を置換する

私はいくつかのノードをスーパーノードに崩壊させる必要があります。私はすべての要素が "superNodeName : listOfnodeNamesToCollapseIntoThisSupernode"という形式の辞書を持っています(dictには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

行 'for n、n_list in super_nodes:'エラーが発生するValueError:アンパックする値が多すぎます。多分、私は 'super_nodes.items()を使う必要があります。 'new_text.append'という行は、strオブジェクトにappendメソッドがありませんので、エラーが発生します。 – viral

+0

@viral私はそれを – cyprieng

+0

に修正しました。ありがとうございます<3 – viral

関連する問題