2016-04-13 16 views
0

私はNetworkxを使用し始めていて、少し問題があります。私はグラフGの連結部分グラフを作成しようとすると それは私はそれが何を意味するのか見当がつかない接続されたコンポーネントが最大のサブグラフを作成する

"UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 76: ordinal not in range(128)".

エラーを返します。

import networkx as nx; 
G = nx.read_gml(r'path.gml'); 

cluster= nx.average_clustering(G); 
H = G.subgraph(nx.connected_components(G),key=len); 
diam=nx.diameter(H); 

どのようなヘルプが本当にありがとうございます!

答えて

1

read_gmlで失敗する可能性があります。これは、おそらくGMLファイル内のUnicode文字のためです。

this noteによれば、GMLはasciiであり、特殊文字はHTMLの特殊文字として表示されます。

は、あなたが行うことができます物事のカップルが、これを修正することがあります。

  1. グラフを作成し、decodeあなたのノードラベル(また、同様に関連するPython Unicode guidanceに注意してください)this questionに示すように。

  2. ノードラベルの文字と最終的にファイルに書き込まれる文字の間のマッピングを作成します。これらは関数として表現することができ、復号関数はread_gmlとしてdestringizerとしても使用できます。

これらのソリューションの両方は、GMLファイルを完全に制御できることを意味します。 GMLを完全に管理していない場合は、簡単なファイルとして読み込んで、label - > " - > various characters->"という形式のパターンを探し、それらのラベルを、おそらく何かに置き換えようとします上記の#2のように。

これが役に立ちます。

+0

ありがとう、私はそれを試してみる:) – Doule

関連する問題