我正在尝试制作获取Twitter网络属性的代码。
但是我的代码出错了。我不知道怎么回事。
错误是这样的:
Traceback (most recent call last):
File "Network_property.py", line 14, in <module>
followee = line.strip().split('\t')[1]
IndexError: list index out of range
代码是这样的:
import os, sys
import time
import networkx as nx
DG = nx.DiGraph()
ptime = time.time()
j = 1
#for line in open("./US_Health_Links.txt", 'r'):
for line in open("./test_network.txt", 'r'):
follower = line.strip().split('\t')[0]
followee = line.strip().split('\t')[1]
DG.add_edge(follower, followee)
if j%1000000 == 0:
print j*1.0/1000000, "million lines done", time.time() - ptime
ptime = time.time()
j += 1
print nx.number_connected_components(DG)
我收集了一些这样的链接数据:
1000 1001
1000 1020191
1000 10267352
1000 10957902
1000 11039092
1000 1118691
1000 11882
1000 1228281
1000 1247041
1000 12965332
1000 13027572
1000 13075072
1000 13183162
1000 13250162
1000 13326292
1000 13452672
1000 13844892
1000 14061830
1000 1406481
1000 14134703
1000 14216951
1000 14254402
1000 14258044
1000 14270791
1000 14278978
1000 14313332
1000 14392970
1000 14441172
1000 14497568
1000 14502775
1000 14595635
1000 14620544
1000 14632615
1000 14680596
1000 14956164
1000 14998341
1000 15132211
1000 15145450
1000 15285998
1000 15288974
1000 15300187
1000 1532061
1000 15326300
“1000”是追随者,其他人是追随者。
+
我想获得(1)连通分量的数量,(2)最大连通分量中节点的分数,(3)度数的平均值和中位数,(4)出度的平均值和中值的结果, (5)直径,和(6)聚类系数
但网站“networkx.lanl.gov”不起作用。
有没有人帮助过我?
答案 0 :(得分:1)
该错误与networkx没有任何关系。发生的事情是,某些行line.strip().split('\t')
只返回一个字段。我猜这个问题是你的文件中有空行。比较:
>>> ''.split("\t")
['']
>>> ''.split("\t")[1]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: list index out of range
>>>
因此,空行可能会导致问题。您可以明确检查,例如,添加
if not line:
continue
在for
循环的开头。
另请查看networkx.read_edgelist,如果您不需要print
语句显示进度,这应该是最简单的。
答案 1 :(得分:1)
您提供的network.txt
文件示例没有标签;它有空格。如果您将split('\t')
的实例更改为split()
,它将在任何空格上拆分,因此无论文件是否有空格或标签,它都会处理您的文件。