如何解决Python3写入CSV出现‘gbk‘ codec can‘t encode的错误
今天,我在 Windows 上用 Python3 爬取知乎上有关中医的问答,但是在把爬取的内容写进CSV文件的时候,出现了以下异常。
UnicodeEncodeError: 'gbk' codec can't encode character '\u2630' in position 3969: illegal multibyte sequence
经过上网查找,发现问题的原因在于 Python3 对字符串的默认编码是Unicode,而爬取的内容,正是储存在字符串变量里。
而使用代码创建CSV时,Windows下面新建的文本文件(CSV是一种文本文件)默认的编码是gbk(Windows简体中文版的系统默认编码就是gbk)。
import requests
import json
import time
import csvheaders = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.146 Safari/537.36',
}i = 0
csvfile = open('csv_test.csv', 'w', newline='')
writer = csv.writer(csvfile)
writer.writerow(['id', 'created_time', 'author', 'content'])while True:url = '' # 网址res = requests.get(url, headers=headers)res.encoding = 'utf-8'jsonfile = json.loads(res.text)is_end = jsonfile['paging']['is_end']for data in jsonfile['data']:l = list()l.append(data['id'])time_local = time.localtime(data['created_time'])l.append(time.strftime("%Y-%m-%d %H:%M:%S", time_local))l.append(data['author']['name'])l.append(data['content'])writer.writerow(l)print('打印到第{0}页'.format(int(i / 5)))i += 5if is_end == True:csvfile.close()breaktime.sleep(1)
当把从网页上读取的内容写到CSV文件的时候,意味着把一个Unicode的字符序列写入到一个编码是gbk的文件。
故报错,解决方法就是在打开该文件的时候,指定文件的编码,让它以指定的编码打开,如下所示。
csvfile = open('csv_test.csv', 'w', newline='', encoding='utf-8')
这样就解决了以上写入错误的问题,但我们用Excel打开该文件时,发现出现了中文乱码的问题,如下图所示。
CSV文件乱码问题一般是编码方式的问题,Excel默认的编码格式是ASNI,故选择以记事本的打开方式打开CSV文件,另存时编码方式选择“ASNI”或“utf-8”即可。
把自己解决问题的过程记录一下,为后面大家遇到这类问题做一个参考。
相关文章:

ui设计怎样做出有效果的视觉层级?
作为一名UI设计师,大家应该清楚的了解到每一款产品都有不同的风格和设计,但是每一款UI设计元素都是有通风之处的,如何能够做出有效的视觉层级,对用户的体验有着十分积极的影响。本期UI设计培训教程就为大家详细的介绍一下ui设计怎…

Java RandomAccessFile的使用
Java的RandomAccessFile提供对文件的读写功能,与普通的输入输出流不一样的是RamdomAccessFile可以任意的访问文件的任何地方。这就是“Random”的意义所在。 RandomAccessFile的对象包含一个记录指针,用于标识当前流的读写位置,这个位置可以向…
【组队学习】【24期】集成学习(中)
集成学习(中) 开源内容: https://github.com/datawhalechina/team-learning-data-mining/tree/master/EnsembleLearning 基本信息 贡献人员:李祖贤、薛传雨、赵可、杨毅远、陈琰钰、李嘉骐学习周期:12天学习形式&a…

Android发布项目到外部仓库
为什么80%的码农都做不了架构师?>>> 关于android发布仓库到外部项目的文章,目前大概为分两类: 一种是发布到bintray、jcenter上,一种是将项目上传到github,然后利用jitpack自动打包,下面简单说…

Java零基础学习难吗
java编程是入行互联网的小伙伴们大多数的选择,那么对于零基础的小伙伴来说Java零基础学习难吗?如果你是初学者,你可以很好的理解java编程语言。并不困难。如果你的学习能力比较高,那么你对Java的理解会更快。而如果你恰巧已经掌握了c或c语言…

玩转“网上邻居”之网络配置(二)
接上篇二、混合系统网络目前实际应用中单一系统的对等网络已不是主流,主要是由于这种网络性能较低,缺乏很好看安全及网络管理能力。目前在各企事业单位中普遍应用的还是基于多系统的域结构混合网络。但因目前主流应用的系统比较多,所以各种网…

UVa 10180 - Rope Crisis in Ropeland!
题目链接:http://uva.onlinejudge.org/index.php?optioncom_onlinejudge&Itemid8&category41&pageshow_problem&problem1121 题意:给出两点坐标,用一条最短的线(曲线或者直线)连接起来,坐…
【组队学习】【24期】河北邀请赛(二手车价格预测)
河北邀请赛(二手车价格预测) 开源内容: https://github.com/datawhalechina/team-learning-data-mining/tree/master/SecondHandCarPriceForecast 数据挖掘实践(二手车价格预测)的内容来自 Datawhale与天池联合发起…

什么样的人合适学习Python?
什么样的人合适学习Python?近几年,关注Python技术的小伙伴越来越多,很多人都想知道Python培训好不好学?难不难学?哪些人适合学?来看看下面的详细介绍。 Python培训分享:什么样的人合适学习Python?想学好python,关键还是看三点…
Table doesn't have a primary key
从数据库取出来的数据,一般会放在一个DataTable中。但是,Insus.NET想实现一个小功能,就是在这个DataTable能快速找到某一行记录,来显示于asp.net页面上。这时我们可以使用DataTable的Find()成員函式來檢查資料是否已存在。但当Ins…
【组队学习】【24期】数据挖掘实践(智慧海洋)
数据挖掘实践(智慧海洋) 开源内容: https://github.com/datawhalechina/team-learning-data-mining/tree/master/wisdomOcean 基本信息 贡献人员:李运佳、李万业、赵信达、张晋、刘羽中、王贺、肖明远学习周期:12天…

vim 输入中文
收藏一些有关vim输入中文的链接为了以后方便查看 http://vimim.googlecode.com/svn/vimim/vimim.html http://www.wang3feng.com/2010/07/03/e5-ad-a6vim-e4-ba-8c-e5-a6-82-e4-bd-95-e5-9c-a8vim-e4-b8-ad-e6-9b-b4-e5-a5-bd-e7-9a-84-e8-be-93-e5-85-a5-e4-b8-ad-e6-96-87/ 本…

Web前端工程师的一些常见误区
想要作为一名合格的web前端工程师,那么掌握基本的开发技术是远远不够的,在职场中还要少犯一些错误,本期小编为大家分享的web前端培训教程主要是介绍一些web前端工程师常见的误区,希望对大家有所帮助。 web前端培训分享:…

WPF关闭应用程序,释放Window窗口资源方法
WindowsForm里一个Application.Exit();方法就可以关闭应用程序,释放掉资源。 WPF里Application类没有该方法,但是有一个Exit的事件驱动,在WPF应用程序里面关闭程序讲究很多: 在WPF应用程序的关闭是有ShutdownMode属性设置…

《Cisco/H3C交换机配置与管理完全手册(第2版)》终稿封面和目录
无数网友一直殷切期待和关注的《Cisco/H3C交换机配置与管理完全手册》(第2版)一书即将于本月底正式上市了。到时对于真实读者,写书评后可以参加全额返款的抽奖活动,加入我的微博(本博客首页中有),留意我发布的最新资讯…
【组队学习】【24期】Docker教程
Docker教程 开源内容: https://github.com/datawhalechina/team-learning-program/tree/master/Docker 基本信息 贡献人员:苏鹏、陈安东,于鸿飞,陈长沙,丁一超,乔石,刘雯静学习周期…

网站ui的配色有哪些需要注意的?
作为一名UI设计师,那么关于配色的问题是非常注重的,尤其是做一款网站设计,配色方面要非常注意,本期小编为大家介绍的UI设计培训教程就是关于网站ui的配色有哪些需要注意的?来看看下面的详细介绍。 UI设计培训分享:网站…

2、安装Lync Server 2013
一、实验环境拓扑的准备工作 二、开始安装Lync Server 2013 安装Lync Server系统主要包含以下的内容:安装本地配置存储、安装Lync Server 组件、请求并分配Lync证书、启动服务。 运行Lync Server 2013的安装程序,选择“安装或更新Lync Server系统”&…

!! 机器学习常用工具
http://fuliang.iteye.com/blog/955023 机器学习 Support Vector Machine SVMlightAn implementation of Vapniks Support Vector Machine LIBSVMA Library for Support Vector Machines Decision Tree C4.5The "classic" decision-tree tool, developed by J. R. Qu…

Datawhale组队学习周报(第010周)
本周(04月19日~04月25日),第 24 期组队学习正在如火如荼的进行中。本期组队学习,一共有 5 门开源课程,共组建了 6 个学习群,参与的学习者有 788 人。另外,第 25 期组队学习也蓄势待发准备与大家…

零基础怎么学习Java?
最近几年,有很多小伙伴都比较关注“零基础怎么学习Java?”这个问题,因为很多小伙伴都是从其他行业转型来参加java培训学习的,都很担心自己学不会,那么来看看下面的详细介绍吧。 零基础怎么学习Java?来看看以下才几点java培训学习…

如何爬取知乎中问题的回答以及评论的数据?
如何爬取知乎中问题的回答以及评论的数据? 我们以爬取“为什么中医没有得到外界认可?”为例来讨论一下如何爬取知乎中问题的回答以及评论的数据。 爬取网页数据通常情况下会经历以下三个步骤。 第一步:网页分析,确认自己所要数据…

Facebook如何使用Avartarnode提升HDFS可靠性
在不久前的Hadoop峰会上,Facebook的工程师Andrew Ryan分享了他们如何使用Namenode和Avatarnode提升HDFS可靠性的方法。Ryan从2009年开始,就参与到了Facebook的 Hadoop开发中。在他的帮助下,Facebook的Hadoop和HDFS数据基础设施,从…

无法远程分发安装软件原因
一、问题及原因 最近做实验在域环境通过组策略分发软件、防病毒网络版远程安装客户端软件都失败,真的原因在于:阻止对Windows注册表的远程访问引起来的。客户端是XP系统,通过Ghost版本安装的,默认是禁用Windows XP注册表的远程访…

小程序的ui应该怎么设计?
UI设计中小程序的设计是很多UI设计师在工作中会碰到的,一款好的小程序设计页面,会带来效果很好的用户体验,下面小编就为大家详细的分享一下具体小程序的ui应该怎么设计? UI设计培训分享:小程序的ui应该怎么设计? 一、导航明确&a…

什么是ThreadLocal
顾名思义它是local variable(线程局部变量)。它的功用非常简单,就是为每一个使用该变量的线程都提供一个变量值的副本,使每一个线程都可以独立地改变自己的副本,而不会和其它线程的副本冲突。从线程的角度看࿰…

【组队学习】【25期】Datawhale组队学习内容介绍
第25期 Datawhale 组队学习活动马上就要开始啦! 本次组队学习的内容为: web开发入门教程数据挖掘实战(异常检测)集成学习(下) 大家可以根据我们的开源内容进行自学,也可以加入我们的组队学习…

为pony程序添加IACA标记(二)
在上一篇文章介绍了一种加IACA标记的方法,但使用还是很麻烦,所以我尝试修改pony编译器,直接增加了IACA支持,目前代码在iaca分支。 使用方法 因为还没发PR到上游,所以要自己克隆编译。 git clone https://github.com/or…

Python培训就业怎么样?
学习Python技术的同学越来越多,很多人都比较看好Python这项技术,觉得Python的前景是不错的,那么具体Python培训就业怎么样呢?来看看下面的详细介绍就知道了。 Python培训就业怎么样?国家大力推行互联网人工之智能技术、大数据技术等&#x…

Oracle Connect to an idle instance
意思是数据库没有启动。转载于:https://www.cnblogs.com/vigarbuaa/archive/2012/09/05/2671825.html