Python读取CSV文件时首元素出现奇怪字符0的问题求助
解决CSV读取时首元素出现前缀的问题
嘿,这个问题我之前也碰到过!你看到的其实是**UTF-8 BOM(字节顺序标记)**在搞鬼——Windows系统下用Excel或者记事本保存UTF-8格式的CSV时,经常会自动加上这个隐藏标记,而Python默认的open()函数打开文件时不会自动识别并忽略它,所以就把这个标记当成普通字符和你的0连在一起读出来了。
给你两个简单的解决方案:
方案一:用utf-8-sig编码打开文件
这是最直接的方法,utf-8-sig编码会自动识别并跳过UTF-8 BOM,修改后的代码如下:
import csv matriceDist = [] # 重点是添加 encoding="utf-8-sig" 参数 file = csv.reader(open("distanceComm.csv", "r", encoding="utf-8-sig"), delimiter=";") for row in file: matriceDist.append(row) print(matriceDist)
方案二:手动去除BOM(如果方案一不适用)
如果你的Python版本比较旧,或者文件编码有特殊情况,也可以手动读取文件内容后去除BOM:
import csv matriceDist = [] with open("distanceComm.csv", "r", encoding="utf-8") as f: # 读取第一行并去除BOM标记 first_line = f.readline().lstrip('\ufeff') # 将处理后的第一行和剩余内容重新组合 content = first_line + f.read() # 用csv.reader读取处理后的内容 file = csv.reader(content.splitlines(), delimiter=";") for row in file: matriceDist.append(row) print(matriceDist)
另外,你也可以用记事本++这类工具打开你的CSV文件,查看它的编码类型(在菜单栏的「编码」选项里),确认是不是UTF-8带BOM的格式,这样能更精准地处理问题。
内容的提问来源于stack exchange,提问作者Adil Nouhail
相关产品推荐
相关产品推荐

