读取 GML 图时出现意外错误
Unexpected error reading GML graph
我已经下载了包含 dolphins social network 的 gml 文件。
前段时间我在 Windows7 机器上对该网络 运行 python 3.4 和 networkx 1.9 做了一些分析,但现在我 运行 在 Arch linux 机器上(使用相同版本的 python 但 使用 networkx 1.10)并在尝试阅读时发现问题文件。
这是用于读取文件的代码:
import networkx as nx
nx.read_gml("dolphins.gml")
这是错误的堆栈跟踪:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<string>", line 2, in read_gml
File "/usr/lib/python3.4/site-packages/networkx/utils/decorators.py",line 220, in _open_file
result = func(*new_args, **kwargs)
File "/usr/lib/python3.4/site-packages/networkx/readwrite/gml.py", line 210, in read_gml
G = parse_gml_lines(filter_lines(path), label, destringizer)
File "/usr/lib/python3.4/site-packages/networkx/readwrite/gml.py", line 383, in parse_gml_lines
graph = parse_graph()
File "/usr/lib/python3.4/site-packages/networkx/readwrite/gml.py", line 372, in parse_graph
curr_token, dct = parse_kv(next(tokens))
File "/usr/lib/python3.4/site-packages/networkx/readwrite/gml.py", line 323, in tokenize
(line[pos:], lineno + 1, pos + 1))
networkx.exception.NetworkXError: cannot tokenize 'graph' at (1, 1)
您能读取文件吗?有人遇到过类似的问题吗?或者知道是什么导致了错误?
提前致谢!
它通过将 networkx 版本从 1.10 降级到 1.9.1 来工作。
希望这个回答可以帮助到其他人。
在较新版本的 networkx 中,gml 文件应遵循更具体的格式。 dolphins.gml 的问题是在方括号前不应该有任何回车 return 。例如:
格式错误:
graph
[
directed 0
node
[
id 0
label "Beak"
]
.
.
.
正确格式:
graph [
directed 0
node [
id 0
label "Beak"
]
.
.
.
不关心方括号前有多少个space只要有多个且没有回车return.
我最后做的是使用正则表达式去掉左方括号前的白色 space。以下正则表达式对我有用:
\s+\[
并用“[”替换即可。括号前必须至少有一个space。
还要记住,每个节点都必须有一个唯一的标签。
希望对您有所帮助。
我已经下载了包含 dolphins social network 的 gml 文件。
前段时间我在 Windows7 机器上对该网络 运行 python 3.4 和 networkx 1.9 做了一些分析,但现在我 运行 在 Arch linux 机器上(使用相同版本的 python 但 使用 networkx 1.10)并在尝试阅读时发现问题文件。
这是用于读取文件的代码:
import networkx as nx
nx.read_gml("dolphins.gml")
这是错误的堆栈跟踪:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<string>", line 2, in read_gml
File "/usr/lib/python3.4/site-packages/networkx/utils/decorators.py",line 220, in _open_file
result = func(*new_args, **kwargs)
File "/usr/lib/python3.4/site-packages/networkx/readwrite/gml.py", line 210, in read_gml
G = parse_gml_lines(filter_lines(path), label, destringizer)
File "/usr/lib/python3.4/site-packages/networkx/readwrite/gml.py", line 383, in parse_gml_lines
graph = parse_graph()
File "/usr/lib/python3.4/site-packages/networkx/readwrite/gml.py", line 372, in parse_graph
curr_token, dct = parse_kv(next(tokens))
File "/usr/lib/python3.4/site-packages/networkx/readwrite/gml.py", line 323, in tokenize
(line[pos:], lineno + 1, pos + 1))
networkx.exception.NetworkXError: cannot tokenize 'graph' at (1, 1)
您能读取文件吗?有人遇到过类似的问题吗?或者知道是什么导致了错误?
提前致谢!
它通过将 networkx 版本从 1.10 降级到 1.9.1 来工作。
希望这个回答可以帮助到其他人。
在较新版本的 networkx 中,gml 文件应遵循更具体的格式。 dolphins.gml 的问题是在方括号前不应该有任何回车 return 。例如:
格式错误:
graph
[
directed 0
node
[
id 0
label "Beak"
]
.
.
.
正确格式:
graph [
directed 0
node [
id 0
label "Beak"
]
.
.
.
不关心方括号前有多少个space只要有多个且没有回车return.
我最后做的是使用正则表达式去掉左方括号前的白色 space。以下正则表达式对我有用:
\s+\[
并用“[”替换即可。括号前必须至少有一个space。
还要记住,每个节点都必须有一个唯一的标签。
希望对您有所帮助。