我编写了一个基本程序,将CSV edgelist加载到网络中,计算网络中每个节点的4个度量,并将结果写入CSV文件。我使用的是NetworkX,当使用数字作为节点ids时,一切都很好。但是,当我移到使用Twitter用户名作为节点id的另一个示例时,我得到了以下错误:
误差
UnicodeDecodeError: 'utf8' codec can't decode bytes in position 23-24: invalid continuation byte码
import sys
import networkx as nx
import csv
# load CSV edgelist into NetworkX
G = nx.read_edgelist(sys.argv[1], delimiter=',')
# calculate centrality metrics
degree = nx.degree_centrality(G)
between = nx.betweenness_centrality(G)
close = nx.closeness_centrality(G)
eigen = nx.eigenvector_centrality(G)
# write centrality results to a list
centrality = []
for i in G:
row = i, degree[i], between[i], close[i], eigen[i]
centrality.append(row)
# write list to CSV
outfile = sys.argv[1].replace('.csv', '_metrics.csv')
header = 'NodeID', 'Degree', 'Betweenness', 'Closeness', 'Eigenvector'
with open(outfile, 'wb') as f:
csv.writer(f).writerow(header)
csv.writer(f).writerows(centrality)发布于 2014-06-25 20:43:01
如果您想快速修复它,并且不知道您的文件的字符被编码为什么,那么我将执行以下操作。我会使用google来确保该文件中的每个字符都是UTF-8。
下面是操作步骤:
这是我快速将csv中的每个字符编码为utf-8的过程。显然,在很多时候,它不是正确的答案,也是你会想要理解字符编码;但是,如果您想要的是操纵文件中的数据,一次不处理编码问题,那么我发现Google是最快和最可靠的解决方案。
注意:由于这个答案最初让我使用这个解决方案,所以应该归功于它。
https://stackoverflow.com/questions/24416591
复制相似问题