2016-04-13 3 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, возможно, из-за символов Unicode в файле GML.

Согласно this note, GML должен быть ascii, закодированный специальными символами, отображающими специальные символы HTML.

Есть несколько вещей, которые вы можете сделать, чтобы исправить это:

  1. При создании графика, decode ваш узел метки, как указано в this question (также, пожалуйста, обратите внимание на соответствующую Python Unicode guidance а).

  2. Создайте собственное сопоставление между символами в метках узла и теми, которые в конечном итоге будут записаны в файл. Они могут быть представлены как функции, и функция декодирования также может использоваться read_gml как destringizer.

Оба эти решения означают, что вы полностью контролируете файл GML. Если у вас нет полного контроля над GML, вы можете прочитать его как простой файл и искать шаблоны метки формы -> "-> различные символы->", а затем попытаться заменить эти ярлыки, возможно, чем-то как показано выше.

Надеюсь, это поможет.

+0

Спасибо, я попробую это :) – Doule

Смежные вопросы