问题描述:
由于笔者项目需要进行关系图谱展示,需要将每篇论文的作者数据构建成共现矩阵,用以输入到Gephi软件中汇出关系图。故,对于爬取的作者数据(存储在Excel中)需要先转换成逗号分隔文件csv。
【初始数据及描述】:由于发表会议论文的作者来自不同国家,所以在作者命名上存在有些作者用自己本国语言(如丹麦语、俄语包含如ć、ø、å、ś
特殊符号等)的名字作为论文上自己的名字。这就导致了包含这些语言的xlsx文件另存为csv文件时无法被ASCII编码方案解码。从而在转换后的csv中以?
来显示这些特殊字符。
【预期转换后的数据】:预期转换后的特殊字符ć、ø、å、ś
应该完整的表示在csv文件中,以下是用记事本打开csv文件的展示图。
曾尝试但无效的方法:
笔者在网上找到了不少解决csv文件打开乱码方案,但大多数都是针对中文字符的。
- 使用
Notepad++
打开xlsx文件尝试转换编码为utf-8
——转换后在csv文件中依然以?
来显示ć、ø、å、ś
——无效 - 将xlsx文件另存为txt后再将txt文件的编码转换为
utf-8
——结果同上,无效
自己的成功解决方案:
一、将Excel文件中的表格数据复制到一个空的txt文件中
可见,复制过来后在txt文件中每个单元格的数据用一个制表符\t
隔开,每行用一个换行符\n
隔开。特殊字符依然正常表示。
二、将该txt文件编码改为utf-8
由于该txt文件默认编码是ASCII
,所以我们需要另存为修改其编码方案为utf-8
。
三、使用Python读取并处理该txt文件数据为csv格式并输出到csv文件
这里,笔者使用Python(其他语言也ok)读取并处理该txt文件数据为csv格式并输出到csv文件。代码如下:
text = []
with open(r'C:\Users\Administrator\Desktop\111.txt', 'r', encoding='utf-8') as f:
text = f.read()
text = text.replace('\t',',') # 将数据中的制表符'\t'替换为逗号','
text2csv = text.replace(',0','') # 将数据中的空白项',0'替换为空''
print(text2csv)
with open(r'C:\Users\Administrator\Desktop\222.csv', 'w', encoding='utf-8') as f:
f.write(text2csv)
和预期结果一致,也正常显示了特殊字符: