Networkx没有使用write_adjlist正确编写文件

时间:2014-05-15 20:41:23

标签: python networkx

使用Python的Library Networkx函数write_adjlistsource code)时遇到以下问题:

输出如下:

164021756 15579697
 836289488
 268525305
527465237 1514162604
460419343
 317218275
397533608
 37880000
39066509
 1146692844

什么时候看起来像这样:

164021756 15579697 836289488 268525305
527465237 1514162604
460419343 317218275
397533608 37880000
39066509 1146692844

我无法真正地为您提供数据,因为它有数百万个节点(这可能是一个因素,尽管我不这么认为)但这基本上就是我和#39到达那里:

G = nx.DiGraph()
graph_file = open(filename, 'r')

for line in graph_file.readlines():
    try:
        x, y =line.replace('\n','').split(',')
    except: print "didn't work"; continue;
    G.add_edge(x,y)
    G.add_edge(y,x)
    #This is because it's undirected, but I need the relationships 
     to be presented on both  nodes

nx.write_adjlist(G,outfilename)

graph_file以userid1,userid2 \ n

的形式显示

此代码适用于2k节点图和16k节点图。

错误可能是由源代码中的generate_adjlist函数引起的,但我并不确定。我也感谢所有帮助和推荐其他方法来创建邻接列表。

规格:Ubuntu 14.04 64位,32GB内存,SSD,AMD FX(tm)-8350八核处理器

编辑:这就是graph_file的样子:

212127041,218628098
840686875,2278293507
1854227586,2278293507
2266167497,2278293507
2254676097,2278293507
2240955304,2278293507
2226709709,2278293507
1859242609,2278293507
341722764,2278293507
1270686055,2278293507
1049821634,2278293507
1003015644,2278293507
616403983,2278293507
556471190,2278293507
27260086,2278293507
714928003,2278293507
1270696736,2278293507
586671909,2278293507
34507480,2278293507

1 个答案:

答案 0 :(得分:4)

您的graph_file可能使用单行' \ n'以外的行结尾格式化。例如,' \ r \ n'或者' \ n \ r'。请尝试line.replace('\n',''),而不是line.strip(),这会删除所有前导和尾随空格。