最近在学习python爬虫,需要将爬取的数据存储为csv格式,方便用Excel打开更直观的分析。

这里应用的是豆瓣的排行榜,爬虫入门好像逃不脱这个网站,哈哈)

python 中csv的代码段是这样的

import csvcsv_headers = {'剧名','评分','年份','参与评论数'}
# 打开一个用来存储数据的文件(文件可以是已经存在,也可以是不存在)
f = open('douban.csv','w',encoding='utf-8')
# 初始化一个csv.writer()对象
f_csv = csv.writer(f)
# 将需要存储的数据进行写入
f_csv.writerow(csv_headers)
f_csv.writerow(data)

用文本编辑器打开显示是正常的,但是用Excel打开时,发现中文字符出现了乱码情况,如图:

        

办法一:

这种情况的出现是因为用excel 打开CSV文件时,会询问用户设置文件的编码格式,但因为用户对Excel的一些默认设置,可能导致用户在打开csv文件时乱码,这时需要在代码中为生成的csv文件添加bom头,为文件强制设置utf-8编码格式避免用户打开文件乱码。

utf-8保存的csv格式文件要让Excel正常打开的话,必须加入在文件最前面加入BOM(Byte order )。如果接收者收到以EF BB BF开头的字节流,就知道这是UTF-8编码了。

所以在write文件的内容数据之前,先write一下BOM。

python3+ 在写文件之前,只需要添加一条代码即可解决:

f_csv.writerow('\ufeff')

办法二:

也可以将encoding=‘utf-8' 改成 ’utf-8-sig',也能起到相同的效果,正常显示中文字符。

f = open('douban.csv','w',encoding='utf-8-sig')

区别如下:

1、”utf-8“ 是以字节为编码单元,它的字节顺序在所有系统中都是一样的,没有字节序问题,因此它不需要BOM,所以当用"utf-8"编码方式读取带有BOM的文件时,它会把BOM当做是文件内容来处理, 也就会发生类似上边的错误。

2、“utf-8-sig"中sig全拼为 signature 也就是"带有签名的utf-8”, 因此"utf-8-sig"读取带有BOM的"utf-8文件时"会把BOM单独处理,与文本内容隔离开,也是我们期望的结果。

最后,用Excel打开后显示都是正常的中文字符。(大功告成!^_^)

python csv写文件,用Excel打开中文乱码解决相关推荐

  1. bug:生产问题,Golang解决csv文件用excel打开中文乱码问题及常见编码和BOM头关系

    bug:Golang解决csv文件用excel打开中文乱码问题 1 场景及分析 场景:今天在生成csv文件之后,测试发现用office和wps打开乱码 分析:经过测试之后发现使用记事本打开不乱码,同时 ...

  2. C# 写csv文件 使用Excel打开 中文乱码

    场景,原本是想随意存一段数据到csv 逗号分隔,简单存的数据又多 但是,使用office Excel打开 中文的部分出现了乱码,而wps显示正常,调查以后是说文件要加BOM头 System.IO.St ...

  3. csv文件用excel打开中文乱码如何设置

    在平时生活及工作中,我在工作经常会碰到csv文件,我们通过excel工作打开csv文件时容易出现中午字体显示为乱码的情况,这是因为CSV是用UTF-8编码的,而EXCEL是ANSI编码,由于编码方式不 ...

  4. csv的文件用excel打开方式 一键解决证件号/订单号后四位变0的情况

    由于从系统中下载的数据是csv格式,里面的证件号和订单号数字超过10位即以科学计数法显示,对15位以后的数字用0填充,因此在网上验证了可行的方式,现分享在这里: 目前使用的是excel2019: 直接 ...

  5. arcgis10.2以上dbf用excel打开中文乱码问题(10.8为例)

    arcgis10.2以上dbf用excel打开中文乱码问题(10.8为例) 新建文本文档,添加以下代码,其中Desktop10.8根据自己的版本号修改 Windows Registry Editor ...

  6. notepad++打开文件后,我再用记事本打开中文乱码解决办法

    notepad++打开文件后,我再用记事本打开中文乱码 用natepad++打开文本,然后将编码方式 改成ANSI编码就能解决该问题

  7. python cmd窗口名字_python cmd 窗口 中文乱码 解决方法 (附:打印不同颜色)

    python cmd 窗口 中文乱码 解决方法 (附:打印不同颜色) 前言 在 python 开发中,有时候想通过cmd窗口来和用户交互,比如显示信息之类的,会比自己创建 GUI 来的方便,但是随之而 ...

  8. csv用excel打开中文乱码

    unity中保存成csv文件是非常好用的,只需要用逗号隔开就好,但是今天在保存成csv文件时由于文本存在中文字符所以出现了奇怪的问题. 1.首先是初次写入csv文件后,用excel打开文件中文字符显示 ...

  9. 《Python常见问题》记录2:Python写入CSV的数据用Excel打开会乱码怎么解决?

    问题描述:在使用python爬虫时,为了将数据保存到本地,可能相比于excel表格更多的会用到csv表格,最近的一次爬虫操作中,我将数据保存到csv表格中后打开发现中文内容全部乱码,如下图: 接下来将 ...

  10. csv文件用excel打开是乱码如何处理

    csv文件是半结构化数据,可以很方便的双击用excel打开,但其使用的是十进制,而excel使用的是二进制 正常情况下数字,字母都是不会有乱码的,但是utf字符集的中文就会出现乱码,txt笔记本等和c ...

最新文章

  1. 让预训练模型学习知识:使用多学习器增强知识建模能力
  2. KernelPCA进行非线性数据的映射和分类
  3. 取消数据源的自动创建,使用Seata对数据源进行代理
  4. P2052-[NOI2011]道路修建【树】
  5. Tomcat启动超时问题Server Tomcat v7.0 Server at localhost was unable to start within 45 seconds
  6. 安卓10不支持qmc解码_官宣:安卓10已发布!21款手机已适配,小米华为率先支持...
  7. int数组初始化_Java数组
  8. Mac 下安装RabbitMQ及配置RabbitMQ可远程访问
  9. 云智能资深专家崮德:谈谈我对华为HarmonyOS 2.0的看法
  10. hdu-1242 dfs+各种剪枝
  11. C# 将彩色PDF转为灰度
  12. 唯众中职人工智能专业解决方案
  13. 工业级三维扫描仪关于扫描前喷粉技巧,你了解多少?
  14. oracle analyze失效,ORACLE: Analyze Table 失敗
  15. wmware虚拟网卡 VMnet8 VMnet1未识别网络解决方法
  16. 讲真,只有low逼才热衷于打脸
  17. python使用www.ip138.com作为解析对象 获取公网ip及ip所属地区
  18. 【文献管理】Zotero基础操作
  19. AJAX设计模式之Lightbox---图片和网页外、连 flash、影片都可以显示在 Lightbox 弹出的方框里面
  20. 计算机上机考试可以粘贴复制吗?

热门文章

  1. 200行Python实现的qq连连看辅助,用于学习,请不要拿去伤害玩家
  2. gt240m x86 android,国产平板福音!INTEL ATOM x86_64位Xposed框架,Android5.1(lolipop)适用...
  3. TIdTCPClient的几种方法
  4. 高数——微分中值定理之拉格朗日与柯西
  5. 【设计】资料合集(1-121)副业学习会
  6. pandas groupby 数据丢失问题
  7. MySQL8.0 setup_actors执行时间统计
  8. 【笔记】路由器:动态路由配置、交换机:vlan配置 网络层次结构:OSI7层模型 、TCP/IP模型(4层模型)、DNS解析过程
  9. C语言骑士与金币问题
  10. 哲理故事与管理之道 14 如何留住员工