首页 > 编程知识 正文

python生成csv文件乱码,csv文件下载乱码

时间:2023-12-27 22:27:52 阅读:326857 作者:BXWS

本文目录一览:

python写文件中文乱码

这是因为IDLE中使用gbk编码,是ascii扩展字符集。

import sys

sys.getdefaultencoding()

'ascii'解决方法:

在IDLE中执行的时候

去掉字符串前面的u字符,也不要加#coding这一行。

2. 先import sys,然后reload(sys),再使用sys.setdefaultencoding("utf-8")。然后就可以打印前面带u的字符串了。(这是搜来的方法,实验了一下,发现在我这没有输出了。。重启了IDLE,才可以输出,不过又变会ascii了)

在文件中执行

在文件开头声明#coding行,文件保存为utf8编码,在字符串开头加u

csv 文件中,打开发现汉字显示为乱码,如何解决

CSV是一种表格文件,但是它的编码方式默认是ANSI,所以有些旧版本的EXCEL打开时中文就会显示乱码。

工具:office excel

步骤

准备一个有乱码的CSV文件用于演示。

右键此CSV文件,选择“用记事本打开”。

点击“文件”--“另存为”。

发现默认编码是“UTF-8”,所以一些Excel表格软件就会显示乱码。对于这样,只要改成ANSI就行了,按确定。

用Excel表格软件再打开,就不会显示乱码了。

pandas read_csv编码问题

一早上就连遇两个中文编码问题报错,果然在python里中文编码就是踩不完的坑。

UnicodeDecodeError: 'utf-8' codec can't decode byte 0xca in position 8: invalid continuation byte

csv文件当中的中文编码问题,打开时加入encoding=‘gb2312’即可解决。

pd.read_csv('a.csv',encoding='gb2312')

pandas.errors.ParserError: Error tokenizing data. C error: Expected 4 fields in line 225, saw 6

因为csv文件默认分隔符是逗号分隔符,此时若文件中储存的信息也含有逗号时,解析器会把储存信息里的逗号也当成分隔符,就会导致列数不一致,read_csv打开报错。特别是在中文里又经常使用逗号,稍不注意就会出错。

解决办法是在写入csv文件的时候使用其他分隔符,“|”,“t”等。记得打开时也要加入分隔符说明delimiter = ‘t’

pd.read_csv('a.csv',delimiter='t')

如果csv文件不是自己写的,就手动把逗号删掉再打开吧。

python解决csv文件用excel打开乱码问题

【问题】

python输出的csv文件用excel打开,里面的中文会变成乱码,但用window下的记事本或mac下的numbers打开就正常显示。

原因是python输出的文件是utf-8编码写入的,excel默认以gbk方式读取,导致乱码发生。

【解决方法1】文件产出时encoding设置为utf-8-sig    

用excel打开csv时,excel会先检查文件的第一个字符,来了解这个文件是什么编码方式,如果这个字符是BOM,excel就知道用utf-8的方式打开这个文件。python自带了处理BOM的编码方式uft-8-sig,因此只需要在文件产出时将encoding设置为utf-8-sig。

如果文件不是由python产出的,只需要以utf-8方式读入再以utf-8-sig方式存储即可

【解决方法2】懒人法,适用只含简体中文的文件

用记事本打开,点击另存为,右下角编码方式选择“ANSI”,这个过程是把这个文件改成gbk编码格式,excel就是默认用gbk方式打开的。

参考: Python写的csv文件,如何让 Excel 双击打开不乱码? - 云+社区 - 腾讯云

对编码格式一窍不通的可以阅读以下网页

python笔记——二进制和文件编码_砍柴姑娘Jourosy的博客-CSDN博客

编码方式之ASCII、ANSI、Unicode概述 - 蓝海人 - 博客园

【简单总结】:

1. 首先需要了解 字符集 和 字符编码 两个概念,字符集定义了字符和二进制的一一对应关系,字符编码规定了如何将字符的编号存储到计算机中。

2. Unicode是字符集,包含了全球文字的唯一编码,utf-8是编码方式,将unicode以某种方式存储到计算机中。

3. 有些字符集和编码是结合在一起的,称作字符集还是编码都无所谓,比如ASCII,GBK

4. ANSI是各个国家地区不同扩展编码方式的总称,互不兼容(可以看出来通用性没有utf好)

5. 不同编码方式在转换时,通常需要以unicode作为中间编码,即先将其他编码的字符串解码(decode)成unicode,再从unicode编码(encode)成另一种编码。

python读取csv文件时,数据内容含有中文,读取出错,怎么办

估计是乱码造成,需要在读取的py文件中指定编码格式:

在文件开头,设置成gbk格式import

os,sys,re,csv

reload(sys)

sys.setdefaultencoding('gbk')

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。