UnicodeDecodeError:' utf8'编解码器无法解码

时间:2014-06-25 19:05:04

标签: python csv networkx

我编写了一个基本程序,用于将CSV边缘列表加载到网络中,为网络中的每个节点计算4个度量标准,并将结果写入CSV文件。我正在使用NetworkX,当使用数字作为节点ID时,一切正常。但是,当我转向使用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)

1 个答案:

答案 0 :(得分:1)

如果您想快速修复并且您不知道文件的字符编码为什么,那么我会执行以下操作。我会使用谷歌文档确保该文件中的每个字符都是UTF-8

以下是:

  • 导航至Google云端硬盘/“创建”/“电子表格”
  • 进入新电子表格后,点击“文件”,然后选择“导入”
  • 然后选择“上传”,然后选择“从计算机中选择文件”
  • 从“导入文件”对话框中选择“替换电子表格”和(注意:“自动检测”选项适用于我)
  • 进入导入的CSV后,选择“文件”/“下载为”/“逗号分隔值(CSV。当前工作表)”

这是我将csv中的每个字符快速编码为utf-8的过程。显然有很多次它不是正确答案而且you'll want to understand character encoding;但如果你想要的是操纵文件中的数据而不是一次处理数小时的编码问题,那么我发现Google Drive是最快,最可靠的解决方案。

注意:归功于this answer最初启用此解决方案。