pythonunicode转字符串
㈠ python 字符串格式的unicode编码转中文
python对于Unicode编码可以使用decode进行转换成中文:
>>> str = b'\xe8\xb4\xb9\xe8\x84\x91\xe5\xad\x90'
>>> str.decode('utf-8')
'费脑子'
如果是字符串类型的Unicode编码没办法直接用decode进行转换:
>>> str ="\\xe8\\xb4\\xb9\\xe8\\x84\\x91\\xe5\\xad\\x90"
>>> str.decode('utf-8')
Traceback (most recent call last):
File "<stdin>", line 1, in <mole>
AttributeError: 'str' object has no attribute 'decode'
处理方式:
>>> str = eval("b" + "\"" + str + "\"")
>>> str.decode('utf-8')
'费脑子'
㈡ python \u559c\u6b22\u4e00\u4e2a\u4eba 怎么将这样的字符串转换成unicode的类型
1、定义一个字符串man,并打印该字符串结果值。

㈢ python怎么把unicode码转汉字
普通字符串可以用多种方式编码成Unicode字符串,具体要看你究竟选择了哪种编码: unicodestring = u"Hello world" # 将Unicode转化为普通Python字符串:"encode" utf8string = unicodestring.encode("utf-8")
㈣ python中unicode字符串的问题
这个要看你在哪里显示,并且要知道你原来的是什么编码。一般用decode解码成unicode,然后用encode编码成你的显示支持的。s.decode('utf-8').encode('gb2312') 就是把s从utf-8解码成unicode的,然后再编码成gb2312的。
㈤ Python字符串转换成Unicode--比较好用的方法
将Python字符串转换成Unicode
先用type函数确定一下是什么编码的
str编码是"utf-8"
另外,
将Unicode转换为其他编码
㈥ Python 编码转换与中文处理
python 中的 unicode 是让人很困惑、比较难以理解的问题. 这篇文章 写的比较好, utf-8是 unicode的一种实现方式,unicode、gbk、gb2312是编码字符集.
Python 默认脚本文件都是 ANSCII 编码的,当文件 中有非 ANSCII 编码范围内的字符的时候就要使用" 编码指示 "来修正一个 mole 的定义中,如果.py文件中包含中文字符(严格的说是含有非anscii字符),则需要在第一行或第二行指定编码声明: # -*- coding=utf-8 -*- 或者 #coding=utf-8
其他的编码如:gbk、gb2312也可以;否则会出现:
先说一下python中的字符串类型,在python中有两种字符串类型,分别是 str 和 unicode ,他们都是basestring的派生类;
在str的文档中有这样的一句话:
也就是说在读取一个文件的内容,或者从网络上读取到内容时,保持的对象为str类型;如果想把一个str转换成特定编码类型,需要把str转为Unicode,然后从unicode转为特定的编码类型如:utf-8、gb2312等。
unicode 转为 gb2312,utf-8等,使用 encode(encoding)
utf-8,GBK转换为 unicode 使用 unicode(s,encoding) 或者 s.decode(encoding)
普通的 str 转为 unicode,
如果直接执行s.encode('gb2312')会发生什么?
这里会发生一个异常:Python 会自动的先将 s 解码为 unicode ,然后再编码成 gb2312。因为解码是python自动进行的,我们没有指明解码方式,python 就会使用 sys.defaultencoding 指明的方式来解码。很多情况下 sys.defaultencoding 是 ANSCII,如果 s 不是这个类型就会出错。
拿上面的情况来说,我的 sys.defaultencoding 是 anscii,而 s 的编码方式和文件的编码方式一致,是 utf8 的,所以出错了:
对于这种情况,我们有两种方法来改正错误:
s = '中文'
s.decode('utf-8').encode('gb2312') ```
import sys
reload(sys) # Python2.5 初始化后会删除 sys.setdefaultencoding 这个方法,我们需要重新载入
sys.setdefaultencoding('utf-8')
str = '中文'
str.encode('gb2312')
print open("Test.txt").read()
import codecs
print open("Test.txt").read().decode("utf-8")
Traceback (most recent call last):
File "ChineseTest.py", line 3, in <mole>
print open("Test.txt").read().decode("utf-8")
UnicodeEncodeError: 'gbk' codec can't encode character u'ufeff' in position 0: illegal multibyte sequence
import codecs
data = open("Test.txt").read()
if data[:3] == codecs.BOM_UTF8:
data = data[3:]
print data.decode("utf-8")
s = "中文"
print unicode(s, "utf-8")
Traceback (most recent call last):
File "ChineseTest.py", line 3, in <mole>
s = unicode(s, "utf-8")
UnicodeDecodeError: 'utf8' codec can't decode bytes in position 0-1: invalid data
s = "中文"
print unicode(s, "gbk")
s = "中文"
print unicode(s, "cp936")
㈦ python中怎样将unicode转换成原来的中文
python默认就是unicode存储。如果是从文件读取的,在open的参数中指定encoding关键字参数就行。如下:
#coding=utf-8/importjson /defLoadQuestion(): /f=open("test.json",'r') qas=json.load(f) question=qas['documents'] /returnquestion/t=LoadQuestion() /printstr(t).decode("unicode-escape")

拓展资料:
通常python2时所有IO读写都是byte方式。也就是编码后的。java也是这样子。只有python3还有某些特定的模块才会自动将byte重新转换成unicode
在python2里的确可以使用s.decode('gbk','ignore')之类的变成unicode。不过在python3里应该是这样子, s.encode('gbk','ignore')这样就变成了byte
如果你喜欢 utf-8,可以s.encode(‘utf-8','ignore')和s.decode(‘utf-8','ignore')
㈧ Python如何将Unicode中文字符串转换成 string字符串
普通字符串可以用多种方式编码成Unicode字符串,具体要看你究竟选择了哪种编码:
unicodestring
=
u"Hello
world"
#
将Unicode转化为普通Python字符串:"encode"
utf8string
=
unicodestring.encode("utf-8")
asciistring
=
unicodestring.encode("ascii")
isostring
=
unicodestring.encode("ISO-8859-1")
utf16string
=
unicodestring.encode("utf-16")
#
将普通Python字符串转化为Unicode:"decode"
plainstring1
=
unicode(utf8string,
"utf-8")
plainstring2
=
unicode(asciistring,
"ascii")
plainstring3
=
unicode(isostring,
"ISO-8859-1")
plainstring4
=
unicode(utf16string,
"utf-16")
assert
plainstring1
==
plainstring2
==
plainstring3
==
plainstring4
㈨ python语言中的如何输入编号叫什么
Python 默认脚本文件都是 ANSCII 编码的,当文件 中有非 ANSCII 编码范围内的字符的时候就要使用"编码指示"来修正。 一个mole的定义中,如果.py文件中包含中文字符(严格的说是含有非anscii字符),则需要在第一行或第二行指定编码声明:
# -*- coding=utf-8 -*-或者 #coding=utf-8 其他的编码如:gbk、gb2312也可以; 否则会出现类似:SyntaxError: Non-ASCII character '/xe4' in file ChineseTest.py on line 1, but no encoding declared; see http://www.pytho for details这样的异常信息;n.org/peps/pep-0263.html
命令查看脚本默认的编码方式
>>> import sys
>>> sys.getdefaultencoding()
'ascii'
>>>
2.2 python中的编码与解码
先说一下python中的字符串类型,在python中有两种字符串类型,分别是str和unicode,他们都是basestring的派生类;str类型是一个包含Characters represent (at least) 8-bit bytes的序列;unicode的每个unit是一个unicode obj;所以:
len(u'中国')的值是2;len('ab')的值也是2;
在str的文档中有这样的一句话:The string data type is also used to represent arrays of bytes, e.g., to hold data read from a file. 也就是说在读取一个文件的内容,或者从网络上读取到内容时,保持的对象为str类型;如果想把一个str转换成特定编码类型,需要把str转为Unicode,然后从unicode转为特定的编码类型如:utf-8、gb2312等;
2.2.1 print 语句解释编码问题
print 是打印默认的编码方式,相当于对任何对象encode编码转化成str对象。默认是gbk的编码就是对Unicode进行自动的gbk编码,再按照gbk编码输出。
当print语句碰到一个unicode目标的时候,会用当前python shell环境的默认编码格式首先对unicode对象进行encode(此时unicode对象已经变成了一个str对象了),然后再以默认编码格式为基础,根据其包含的汉字和编码的对应规则,把这个str对象解释成中文并显示出来。但是当print语句碰到的直接是个str目标的时候,就不管其从unicode转到str时用的编码格式是什么,直接用默认编码格式的对应规则来解释成中文。所以,当unicode对象转换成str时的编码格式和print语句的默认编码格式不一致的时候就会出现乱码现象。比如在cmd的python shell里面:
复制代码
复制代码
证明Python 系统默认编码gbk
>>> s= '你好'
>>> s
'\xc4\xe3\xba\xc3'
>>> s = u'你好'
>>> s
u'\xc4\xe3\xba\xc3'
>>> s = '你好'
>>> s
'\xc4\xe3\xba\xc3'
>>> print type(s)
<type 'str'>
>>>unicode 编码打印错误,print 解析字符串而不是Unicode 编码
>>> s = u'你好'
>>> print s
ÄãºÃ
>>>uni = u'你好' #存入一个unicode对象
>>>print uni
你好 #可以正常显示 相当于Unicode.encode(gbk)
>>>uni.encode("gbk")
'\xc4\xe3\xba\xc3' #显示的是个str对象了,如果type(uni.encode("gbk"))得到的就是str对象
>>>print uni.encode("gbk")
你好 #可以正常显示,因为在cmd下的pythonshell里默认个编码格式就是gbk,gbk解析
>>>uni.encode("utf-8")
'\xe4\xbd\xa0\xe5\xa5\xbd' #可以看到,encode用的编码格式不同,编成的字符串也是不同的
>>>print uni.encode("utf-8")
浣犲ソ #乱码,因为用了gbk中汉字和字符串编码格式对应规则去解释了用utf-8编码成的字符串。解释的编码格式不对应。
#######さらに######
>>>print '\xc4\xe3' #自己写出来的这么个字符串(前面不加r)的话也会被print解释成中文,按照编码格式输出
你
>>>print uni.encode("utf-8").decode("gbk")
浣犲ソ
'''
乱码,而且和上面的乱码一样,这是因为,在uni被utf-8 encode之后,这个对象变成了str对象,是'\xe4\xbd\xa0\xe5\xa5\xbd' 这个。
后来,它又被按照gbk的规则解码,又变回了unicode,但是此时它在内存里的二进制数据已经和最初的uni不一样了。
最初的uni,应该是'\xc4\xe3\xba\xc3'.decode("gbk"),而现在的这个东西,他decode之前的字符串已经变过了。
这么一个东西再拿去print,又把它编码成了gbk格式,相当于前面那步decode没有做,变回了'\xe4\xbd\xa0\xe5\xa5\xbd'。
再解释成汉字,当然就和最开始用uni编码成utf-8格式再解释成汉字的乱码一样了
'''
复制代码
2.2.2 脚本print 打印的正确方式
上面已经证明了系统的默认编码方式是gbk,就是print 最后正确的编码方式应该是gbk
两种解决编码不匹配的情况:
一是明确的指示出 s 的编码方式
# -*- coding: utf-8 -*-
s = '中文'
s.decode('utf-8').encode('gb2312')
二是更改 sys.defaultencoding 为文件的编码方式
#! /usr/bin/env python
# -*- coding: utf-8 -*-
import sys
reload(sys) # Python2.5 初始化后会删除 sys.setdefaultencoding 这个方法,我们需要重新载入
sys.setdefaultencoding('utf-8')
str = '中文'
str.encode('gb2312')
三、实践经验中爬取数据的获得
复制代码
# -*- coding: utf-8 -*-
'''
#加油两个字可以很好的比较编码正确和错误
#### 错误的处理方式,
s = "中文"
print s
#这里print就不是输出gbk的编码,是按照头文件utf-8的格式输出
# 结果:中文
print s.decode('utf-8')
#结果中文,s进行解码称为Unicode,print打印就和系统print打印一样自动将Unicode进行
#解码,不用encode编码也能输出,但是最好转化成为字符串输出。
上面实例就是错误使用编码,错误使用编码会出现个别字体的乱码。
'''
'''
要点1、声明头文件# -*- coding: utf-8 -*- 说明所有的代码和中文是utf-8的编码方式
要点2、print输出函数输出到前台cmd中的默认系统编码方式是GBK,
要点3、尽量将Unicode转化成为字符串str (gbk或者utf-8),再去处理。
#unicode 转化成为字符串
s = u'加油'
print s
#结果:加油。原因:系统自动将Unicode升级gbk编码成为字符串,然后系统print 打印gbk
print s.encode('utf-8')
#结果:锷犳补。错误原因:Unicode 编码成为utf-8的字符串形式,但是print打印系统是gbk的,编码冲突。
print s.encode('gbk')
#结果:加油。原因:和print s等价,认为编码了gbk,系统打印
ss = "加油"
print ss
#结果:锷犳补。原因:ss为utf-8的字符串str,print 打印的对应编码字符串是gbk的,所以编码冲突。
print ss.decode('utf-8').encode('gbk')
#结果:加油。原因:ss首先从字符串编码utf-8解码成为unicode,然后进行编码gbk,等价使用print ss.decode('utf-8')。
'''
'''
3.1python中关于中文转换url编码的问题
爬虫的时候我们经常会碰到中文链接编码出现变换的问题,
例如'丽江'中文在url的地址编码却是'%E4%B8%BD%E6%B1%9F',
因此需 要做一个转换。这里我们就用到了模块urllib。
'''
import urllib
data = '丽江'
print data.decode('utf-8').encode('gbk')
#对utf-8的中文编码
print urllib.quote(data)
#那我们想转回去呢?
print urllib.unquote('%E4%B8%BD%E6%B1%9F').decode('utf-8').encode('gbk')
'''
'丽江'在网页编码是gbk的转换码是'%C0%F6%BD%AD',utf-8中的转化码是'%E4%B8%BD%E6%B1%9F',其实是编码问题。
网络的是gbk,其他的一般网站比如google就是utf8的。所以可以用下列语句实现。
'''
#江苏课题的编码转化
import sys,urllib
s = '江苏'
print urllib.quote(s.decode(sys.stdin.encoding).encode('gbk'))
print urllib.quote(s.decode(sys.stdin.encoding).encode('utf8'))
for place in ['南京','无锡','徐州','常州','苏州','盐城','南通','连云港','淮安','盐城','扬州']:
print urllib.quote(place)
####################
#结果:
'''
>>>
丽江
%E4%B8%BD%E6%B1%9F
丽江
%E4%B8%BD%E6%B1%9F
%E6%B6%93%E8%8A%A5%E7%9D%99
>>>
'''
㈩ 如何使用python,将字符串转化为 \u XXXX 的字符串(unicode)
print(u'你好'.__repr__())
