包含特殊字符的Excel表格转换为utf-8编码的csv逗号分隔文件解决方案

本文介绍了一种解决CSV文件中特殊字符乱码问题的方法,包括将Excel数据转换为txt格式,调整编码为UTF-8,并通过Python脚本进一步转换为CSV格式。

问题描述:

由于笔者项目需要进行关系图谱展示,需要将每篇论文的作者数据构建成共现矩阵,用以输入到Gephi软件中汇出关系图。故,对于爬取的作者数据(存储在Excel中)需要先转换成逗号分隔文件csv

【初始数据及描述】:由于发表会议论文的作者来自不同国家,所以在作者命名上存在有些作者用自己本国语言(如丹麦语、俄语包含如ć、ø、å、ś特殊符号等)的名字作为论文上自己的名字。这就导致了包含这些语言的xlsx文件另存为csv文件时无法被ASCII编码方案解码。从而在转换后的csv中以?显示这些特殊字符
在这里插入图片描述
【预期转换后的数据】:预期转换后的特殊字符ć、ø、å、ś应该完整的表示在csv文件中,以下是用记事本打开csv文件的展示图。
在这里插入图片描述

曾尝试但无效的方法:

笔者在网上找到了不少解决csv文件打开乱码方案,但大多数都是针对中文字符的。

  1. 使用Notepad++打开xlsx文件尝试转换编码为utf-8 ——转换后在csv文件中依然以?来显示ć、ø、å、ś——无效
  2. 将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)

和预期结果一致,也正常显示了特殊字符:
在这里插入图片描述
在这里插入图片描述

处理CSV文件数据导入MySQL数据库的过程中,数据安全性和完整性是关键。推荐使用《Python读取txt文件并导入MySQL数据库教程》作为参考,该教程详细介绍了相关的技术要点和操作步骤。 参考资源链接:[Python读取txt文件并导入MySQL数据库教程](https://wenku.youkuaiyun.com/doc/64520f54fcc539136800791c?spm=1055.2569.3001.10343) 首先,确保CSV文件编码格式UTF-8,这是因为UTF-8能够正确表示大多数国家的文字字符,避免乱码问题。打开CSV文件时,应指定正确的编码格式,使用`open(file_path, 'r', encoding='utf-8')`,其中`file_path`是文件的路径。 其次,对于数据的读取和处理,可以使用Python内置的文件读取函数`open()`。使用`readlines()`方法读取文件的每一行,并使用`str.strip()`去除每行末尾的换行符`\n`或回车符`\r`。接着,使用`str.split(',')`方法按照逗号分隔符来分割每行数据,得到一个列表,其中包含了该行的所有数据字段。 在将数据插入MySQL数据库之前,需要建立数据库连接。使用`pymysql`模块的`connect()`方法建立连接,设置主机名、端口、用户名、密码以及数据库名。随后,通过`cursor()`方法获取一个游标对象,用于执行SQL语句。 定义SQL插入语句时,使用`%s`作为占位符,这样可以避免SQL注入的风险。通过循环遍历分割后的数据列表,并使用`cursor.execute(sql, param)`方法执行插入操作,其中`sql`是定义好的插入语句,`param`是包含该行所有数据字段的元组。确保每个数据字段都被正确地插入数据库。 在导入所有数据后,调用`***mit()`来提交事务,确保数据被完整地保存在数据库中。最后,不要忘记关闭文件、游标和数据库连接,释放系统资源。使用`file.close()`, `cursor.close()`, `conn.close()`可以完成这个步骤。 通过上述步骤,可以有效地将UTF-8编码CSV文件数据导入MySQL数据库,并且确保数据的安全性和完整性。如果希望进一步提升数据导入的效率和安全性,可以考虑使用Python的`csv`模块来处理CSV文件,以及学习更多关于`pymysql`模块的高级用法。 参考资源链接:[Python读取txt文件并导入MySQL数据库教程](https://wenku.youkuaiyun.com/doc/64520f54fcc539136800791c?spm=1055.2569.3001.10343)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SL_World

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值