190808-Python CSV读写解决中文乱码问题

文章目录
  1. 1. csv中文乱码
  • II. 其他
    1. 1. 一灰灰Blog: https://liuyueyi.github.io/hexblog
    2. 2. 声明
    3. 3. 扫描关注
  • 一般而言,我并不会直接操作excel文件,如果需要输出表格的时候,我会选择csv文件,用英文逗号来分割不同的单元格;csv文件的优点是简单,文本格式,vim可以直接打开编辑,excel也可以打开可以方便的转换为excel文档;可以说即适合开发人员,也适合给运营同学

    然而有个蛋疼的问题,csv文件中文乱码问题,下面记录下,在python中如何解决

    1. csv中文乱码

    python自带csv库,不需要额外安装,可以直接使用,一般的使用姿势也比较简单,如下,一个简单的使用case

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    import csv

    rows = [['中文', '啥米东东', '3'], ['☺️da', 'da5dd', '!26asdf']]
    with open('my.csv', 'w+', newline='') as csv_file:

    writer = csv.writer(csv_file)
    for row in rows:
    writer.writerow(row)

    with open('my.csv', 'r+', newline='') as csv_file:
    reader = csv.reader(csv_file)
    for row in reader:
    print(str(row))

    上面的代码执行结果如下

    直接通过代码读取数据,发现并没有什么问题,中文也是正常输出,但是用excel打开这个文件时,发下长下面这样

    这种乱码,多半是因为编码格式的问题,如果我们需要支持中文,则需要指定一下编码格式

    1
    2
    3
    4
    5
    6
    7
    8
    9
    import codecs
    import csv

    rows = [['中文', '啥米东东', '3'], ['☺️da', 'da5dd', '!26asdf']]
    with open('my.csv', 'w+', newline='') as csv_file:
    csv_file.write(codecs.BOM_UTF8.decode())
    writer = csv.writer(csv_file)
    for row in rows:
    writer.writerow(row)

    注意代码行: csv_file.write(codecs.BOM_UTF8.decode()),指定写入文本的编码格式,然后再次执行之后结果为

    II. 其他

    1. 一灰灰Bloghttps://liuyueyi.github.io/hexblog

    一灰灰的个人博客,记录所有学习和工作中的博文,欢迎大家前去逛逛

    2. 声明

    尽信书则不如,已上内容,纯属一家之言,因个人能力有限,难免有疏漏和错误之处,如发现bug或者有更好的建议,欢迎批评指正,不吝感激

    3. 扫描关注

    一灰灰blog

    QrCode

    知识星球

    goals

    评论

    Your browser is out-of-date!

    Update your browser to view this website correctly. Update my browser now

    ×