GVKun编程网logo

python UnicodeEncodeError: 'gbk' codec can't encode character ...

4

以上就是给各位分享pythonUnicodeEncodeError:'gbk'codeccan'tencodecharacter...,同时本文还将给你拓展bs4UnicodeEncodeError:

以上就是给各位分享python UnicodeEncodeError: 'gbk' codec can't encode character ...,同时本文还将给你拓展bs4 UnicodeEncodeError: ''gbk'' codec can''t encode character ''\xa0''、CDH 报错:UnicodeEncodeError: ''ascii'' codec can''t encode characters in position 0-11: or...、csv 基本操作, 报错解决(UnicodeEncodeError: ''utf-8'' codec can''t encode characters in position ...、pip install 安装报错:UnicodeEncodeError: ''ascii'' codec can''t encode characters in position XX 的解决办法等相关知识,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

python UnicodeEncodeError: 'gbk' codec can't encode character ...

python UnicodeEncodeError: 'gbk' codec can't encode character ...

使用Python写文件的时候,或者将网络数据流写入到本地文件的时候,大部分情况下会遇到:UnicodeEncodeError: ‘gbk‘ codec can‘t encode character ‘\xa0‘ in position ... 这个问题。 网络上有很多类似的文件讲述如何解决这个问题,但是无非就是encode,decode相关的,这是导致该问题出现的真正原因吗?不是的。 很多时候,我们使用了decode和encode,试遍了各种编码,utf8,utf-8,gbk,gb2312等等,该有的编码都试遍了,可是编译的时候仍然出现: UnicodeEncodeError: ‘gbk‘ codec can‘t encode character ‘\xa0‘ in position XXX。 崩溃了。

    在windows下面编写python脚本,编码问题很严重。

    将网络数据流写入文件时时,我们会遇到几个编码:

    1: #encoding=‘XXX‘ 这里(也就是python文件第一行的内容)的编码是指该python脚本文件本身的编码,无关紧要。只要XXX和文件本身的编码相同就行了。 比如notepad++ "格式"菜单里面里可以设置各种编码,这时需要保证该菜单里设置的编码和encoding XXX相同就行了,不同的话会报错

    2:网络数据流的编码 比如获取网页,那么网络数据流的编码就是网页的编码。需要使用decode解码成unicode编码。

    3:目标文件的编码 要将网络数据流的编码写入到新文件,那么我么需要指定新文件的编码。写文件代码如:

f.write(txt)

那么txt是一个字符串,它是通过decode解码过的字符串。关键点就要来了:目标文件的编码是导致标题所指问题的罪魁祸首。如果我们打开一个文件:

 f = open("out.html","w")

在windows下面,新文件的默认编码是gbk,这样的话,python解释器会用gbk编码去解析我们的网络数据流txt,然而txt此时已经是decode过的unicode编码,这样的话就会导致解析不了,出现上述问题。 解决的办法就是,改变目标文件的编码:

f = open("out.html","w",encoding=utf-8)

解决。

bs4 UnicodeEncodeError: ''gbk'' codec can''t encode character ''\xa0''

bs4 UnicodeEncodeError: ''gbk'' codec can''t encode character ''\xa0''

Problem:

写爬虫时,出现了以下错误:

意思是Unicode编码错误,gbk编解码器不能编码\xa0字符。

爬取信息包含中文,使用BeautifulSoup库解析网页,用get_text()方法获取标签内的文本信息。

 

Debug:

解析:

当我们获取这个网页的源代码的时候,是将这个网页用utf-8的解码方式将其转换成对应的Unicode字符

当我们使用print()函数将其打印到Windows系统的DOS窗口上的时候(DOS窗口的编码方式是GBK),自动将Unicode字符通过GBK编码转换为GBK编码方式的str。

 

  • 出现问题(gbk编解码器不能编码\xa0字符)的原因?

网页源代码中的  的utf-8 编码是:\xc2\xa0,解析后,转换为Unicode字符为:\xa0,当使用print() 显示到DOS窗口上的时候,转换为GBK编码的字符串,但是\xa0这个Unicode字符没有对应的 GBK 编码的字符串,所以出现错误。

 

Solve:

用空格 来替换 \xa0 ( ):

方法1:在网页源码上替换 

在解析之前对r.text中的网页源码的&nbsp进行替换

soup = BeautifulSoup(html.replace('' '', '' ''), ''lxml'')

  

方法2:在解析为Unicode之后替代\xa0

在get_text()解析之后对u''\xa0''进行替换

job_detail = soup.select(''.job-detail'')[0].get_text().replace(u''\xa0'', '' '')

  

 

 

原文出处:https://www.cnblogs.com/liangmingshen/p/11703679.html

CDH 报错:UnicodeEncodeError: ''ascii'' codec can''t encode characters in position 0-11: or...

CDH 报错:UnicodeEncodeError: ''ascii'' codec can''t encode characters in position 0-11: or...

1.在CDH集群启动Hue服务时,出现了错误,如下图:

2.上图显示得知,是调用python文件(/opt/cloudera/parcels/CDH-5.16.1-1.cdh5.16.1.p0.3/lib/hue/build/env/lib/python2.7/site-packages/Django-1.6.10-py2.7.egg/django/core/management/base.py)时出现了字符集错误。

 

3.在master主机上修改该文件,增加py代码

import sys
reload(sys)
sys.setdefaultencoding(''utf8'')

如下图:

 

4.重启Hue服务,问题解决。

以上。

csv 基本操作, 报错解决(UnicodeEncodeError: ''utf-8'' codec can''t encode characters in position ...

csv 基本操作, 报错解决(UnicodeEncodeError: ''utf-8'' codec can''t encode characters in position ...

最常用的一种方法,利用pandas包

import pandas as pd

#任意的多组列表
a = [1,2,3]
b = [4,5,6]    

#字典中的key值即为csv中列名
dataframe = pd.DataFrame({''a_name'':a,''b_name'':b})

#将DataFrame存储为csv,index表示是否显示行名,default=True
dataframe.to_csv("test.csv",index=False,sep='','')
 
a_name  b_name
0       1       4
1       2       5
2       3       6
 

 

同样pandas也提供简单的读csv方法

import pandas as pd
data = pd.read_csv(''test.csv'')
 

会得到一个DataFrame类型的data,不熟悉处理方法可以参考pandas十分钟入门


另一种方法用csv包,一行一行写入

import csv

#python2可以用file替代open
with open("test.csv","w") as csvfile: 
    writer = csv.writer(csvfile)

    #先写入columns_name
    writer.writerow(["index","a_name","b_name"])
    #写入多行用writerows
    writer.writerows([[0,1,3],[1,2,3],[2,3,4]])
 
index   a_name  b_name
0       1       3
1       2       3
2       3       4
 

 

读取csv文件用reader

import csv
with open("test.csv","r") as csvfile:
    reader = csv.reader(csvfile)
    #这里不需要readlines
    for line in reader:
        print line
 
 
如果报错,使用以下方法:
错误UnicodeEncodeError: ''utf-8'' codec can''t encode characters in position 232-233: surrogates not allowed
import csv
with open(file,''w'',encoding=''utf8'', errors=''surrogatepass'') as csvfile:   csv_writer = csv.writer(csvfile)   csv_writer.writerow(headers)   csv_writer.writerow(row) 


pip install 安装报错:UnicodeEncodeError: ''ascii'' codec can''t encode characters in position XX 的解决办法

pip install 安装报错:UnicodeEncodeError: ''ascii'' codec can''t encode characters in position XX 的解决办法

系统 win10

python 版本 2.7

使用 pip install pyyaml 时报错

解决办法如下: 
** 在 Python 目录 Python27\Lib\site-packages 建一个文件 sitecustomize.py 
里面的内容是:

import sys 
sys.setdefaultencoding(''UTF-8'') 

保存后重新执行 pip install pyyaml, 一切 ok

(请无视乱码)

关于python UnicodeEncodeError: 'gbk' codec can't encode character ...的问题我们已经讲解完毕,感谢您的阅读,如果还想了解更多关于bs4 UnicodeEncodeError: ''gbk'' codec can''t encode character ''\xa0''、CDH 报错:UnicodeEncodeError: ''ascii'' codec can''t encode characters in position 0-11: or...、csv 基本操作, 报错解决(UnicodeEncodeError: ''utf-8'' codec can''t encode characters in position ...、pip install 安装报错:UnicodeEncodeError: ''ascii'' codec can''t encode characters in position XX 的解决办法等相关内容,可以在本站寻找。

本文标签: