Skip to main content
`Ctrl`+`K`

# generate_gml

generate_gml(G, stringizer=None)

  Generate a single entry of the graph `G` in GML format.

  Parameters:
    G NetworkX graph

      The graph to be converted to GML.

    stringizer callable, optional

      A `stringizer` which converts non-int/non-float/non-dict values into strings. If it cannot convert a value into a string, it should raise a `ValueError` to indicate that. Default value: None.

  Returns:
    lines: generator of strings

      Lines of GML data. Newlines are not appended.

  Raises:
    NetworkXError

      If `stringizer` cannot convert a value into a string, or the value to convert is not a string while `stringizer` is None.

  See also

  `literal_stringizer`

  Notes

  Graph attributes named ‘directed’, ‘multigraph’, ‘node’ or ‘edge’, node attributes named ‘id’ or ‘label’, edge attributes named ‘source’ or ‘target’ (or ‘key’ if `G` is a multigraph) are ignored because these attribute names are used to encode the graph structure.

  GML files are stored using a 7-bit ASCII encoding with any extended ASCII characters (iso8859-1) appearing as HTML character entities. Without specifying a `stringizer`/`destringizer`, the code is capable of writing `int`/`float`/`str`/`dict`/`list` data as required by the GML specification. For writing other data types, and for reading data other than `str` you need to explicitly supply a `stringizer`/`destringizer`.

  For additional documentation on the GML file format, please see the GML url.

  See the module docstring `networkx.readwrite.gml` for more details.

  Examples

      >>> G = nx.Graph()
      >>> G.add_node("1")
      >>> print("\n".join(nx.generate_gml(G)))
      graph [
        node [
          id 0
          label "1"
        ]
      ]
      >>> G = nx.MultiGraph([("a", "b"), ("a", "b")])
      >>> print("\n".join(nx.generate_gml(G)))
      graph [
        multigraph 1
        node [
          id 0
          label "a"
        ]
        node [
          id 1
          label "b"
        ]
        edge [
          source 0
          target 1
          key 0
        ]
        edge [
          source 0
          target 1
          key 1
        ]
      ]