In [2]:
from collections import defaultdict
from discoursegraphs.readwrite import RSTGraph
from discoursegraphs.readwrite.generic import ensure_ascii_labels

RFILE = 'rst/maz-1423.rs3'

In [3]:
rdg = RSTGraph(RFILE)

typecount = defaultdict(int)
for n in rdg.nodes_iter():
    typecount[type(rdg.node[n].get('label'))] += 1
    
print typecount


defaultdict(<type 'int'>, {<type 'unicode'>: 202, <type 'str'>: 15})

In [4]:
rdg = RSTGraph(RFILE)
ensure_ascii_labels(rdg)

typecount = defaultdict(int)
for n in rdg.nodes_iter():
    typecount[type(rdg.node[n].get('label'))] += 1
    
print typecount


defaultdict(<type 'int'>, {<type 'str'>: 217})

In [5]:
import networkx as nx

testgraph = nx.Graph()
testgraph.add_node(1, label='ä')
nx.write_gml(testgraph, '/tmp/test.gml')


---------------------------------------------------------------------------
UnicodeDecodeError                        Traceback (most recent call last)
<ipython-input-5-f538110f0f25> in <module>()
      3 testgraph = nx.Graph()
      4 testgraph.add_node(1, label='ä')
----> 5 nx.write_gml(testgraph, '/tmp/test.gml')

/usr/local/lib/python2.7/dist-packages/networkx/readwrite/gml.pyc in write_gml(G, path)

/usr/local/lib/python2.7/dist-packages/networkx/utils/decorators.pyc in _open_file(func, *args, **kwargs)
    218         # Finally, we call the original function, making sure to close the fobj.
    219         try:
--> 220             result = func(*new_args, **kwargs)
    221         finally:
    222             if close_fobj:

/usr/local/lib/python2.7/dist-packages/networkx/readwrite/gml.pyc in write_gml(G, path)
    427     >>> nx.write_gml(G,"test.gml.gz")
    428     """
--> 429     for line in generate_gml(G):
    430         line += '\n'
    431         path.write(line.encode('ascii', 'xmlcharrefreplace'))

/usr/local/lib/python2.7/dist-packages/networkx/readwrite/gml.pyc in generate_gml(G)
    365         # Need to escape & and " with HTML entities
    366         label = escape(label, quote=True)
--> 367         yield 2 * indent + 'label "{0}"'.format(label)
    368         if n in G:
    369           for k,v in G.node[n].items():

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

In [ ]:
import networkx as nx

testgraph = nx.Graph()
testgraph.add_node(1, label=u'ä')
nx.write_gml(testgraph, '/tmp/test.gml')

In [ ]:
import networkx as nx

testgraph = nx.Graph()
testgraph.add_node(1, label=u'&auml;')
nx.write_gml(testgraph, '/tmp/test.gml')