python将unicode和str互相转化的实现

问题一:

将u'\u810f\u4e71'转换为'\u810f\u4e71'

方法:

s_unicode = u'\u810f\u4e71'
s_str = s_unicode.encode('unicode-escape').decode('string_escape')

问题二:

将'\u810f\u4e71'转换为u'\u810f\u4e71'

方法:

s_str = '\u810f\u4e71's_unicode = s_str.decode('unicode-escape')

补充知识:Python最简单的解决列表中只打印UNICODE而不是中文字符的方法

答案就是用json模块:

例如:

import json

data=[{u'\u663e\u793a': [u'python', u'\u8bd5\u9a8c'], u'\u6570\u91cf': 22, u'\u8bed\u8a00': u'python'}]
data_c = u'\u663e\u793a'
print data
print data_c

res_data=json.dumps(data,ensure_ascii=False,encoding="gb2312")
print res_data

在没有进行格式转换时,输出为:

>>>[{u'\u663e\u793a': [u'python', u'\u8bd5\u9a8c'], u'\u6570\u91cf': 22, u'\u8bed\u8a00': u'python'}]

>>>显示

可见非列表中的数据在输出时是会转换成中文显示出来的,但列表中的unicode数据不会。

转换后,输出为:

>>>[{"显示": ["python", "试验"], "数量": 22, "语言": "python"}]

如果后面这种输出是想要的格式,那么就利用现成的json模块将原列表格式转换为json字符串输出,并设置好编码格式,就可以了。

当还需要再用这部分用来显示的数据,譬如以后什么时候又想直接用python来读取log文件中这种看起来比较方便的带中文的伪列表,那么再用json.loads转换回去即可。

以上这篇python将unicode和str互相转化的实现就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • Python2.x中str与unicode相关问题的解决方法

    python2.x中处理中文,是一件头疼的事情.网上写这方面的文章,测次不齐,而且都会有点错误,所以在这里打算自己总结一篇文章. 我也会在以后学习中,不断的修改此篇博客. 这里假设读者已有与编码相关的基础知识,本文不再再次介绍,包括什么是utf-8,什么是unicode,它们之间有什么关系. str与字节码 首先,我们完全不谈unicode. s = "人生苦短" s是个字符串,它本身存储的就是字节码.那么这个字节码是什么格式的? 如果这段代码是在解释器上输入的,那么这个s的格式就是解

  • python中将\\uxxxx转换为Unicode字符串的方法

    今天碰到一个很有意思的问题,需要将普通的 Unicode字符串转换为 Unicode编码的字符串,如下: 将 \\u9500\\u552e 转化为 \u9500\u552e 也就是 销售 . 乍一看感觉挺简单的,用 re 库将前面的反斜杠去掉即可,但是在替换的过程中会抛出如下错误: Traceback (most recent call last):   File "<pyshell#15>", line 1, in <module>     re.sub(r&

  • python中int与str互转方法

    最近学习python中的数据类型时,难免联想到java中的基本型数据类型与引用型数据类型.于是对python中的int与str做了简单赋值输出,出现了意料之外的事情. >>> a = 4 >>> b = int('4') >>> id (a) 1440608144 >>> id (b) 1440608144 >>> 使用int(object)后,a与b的地址是一样的. >>> c = 'e e' &

  • python将unicode和str互相转化的实现

    问题一: 将u'\u810f\u4e71'转换为'\u810f\u4e71' 方法: s_unicode = u'\u810f\u4e71' s_str = s_unicode.encode('unicode-escape').decode('string_escape') 问题二: 将'\u810f\u4e71'转换为u'\u810f\u4e71' 方法: s_str = '\u810f\u4e71's_unicode = s_str.decode('unicode-escape') 补充知识

  • python将unicode转为str的方法

    问题:  将u'\u810f\u4e71'转换为'\u810f\u4e71' 方法: s_unicode = u'\u810f\u4e71' s_str = s_unicode.encode('unicode-escape').decode('string_escape') 以上这篇python将unicode转为str的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们.

  • python根据unicode判断语言类型实例代码

    本文实例主要实现的是python根据unicode判断语言类型,具体如下. 实例代码: def is_chinese(uchar): """判断一个unicode是否是汉字""" if uchar >= u'\u4e00' and uchar<=u'\u9fa5': return True else: return False def is_number(uchar): """判断一个unicode是否是

  • python实现unicode转中文及转换默认编码的方法

    本文实例讲述了python实现unicode转中文及转换默认编码的方法.分享给大家供大家参考,具体如下: 一.在爬虫抓取网页信息时常需要将类似"\u4eba\u751f\u82e6\u77ed\uff0cpy\u662f\u5cb8"转换为中文,实际上这是unicode的中文编码.可用以下方法转换: 1. >>> s = u'\u4eba\u751f\u82e6\u77ed\uff0cpy\u662f\u5cb8' >>> print s 人生苦短,

  • Python中bytes和str的区别与联系详解

    目录 Bytes和Str的区别 Bytes与Str间的转换 读写文件的注意事项 总结 Bytes和Str的区别 在Python3中,字符序列有两种类型:bytes和str.bytes类型是无符号的8位值(通常以ASCII码显式),而str类型是Unicode代码点(code point).代码点指编码字符集中,字符所对应的数字. a = b'hello world' print(isinstance(a, bytes)) print(list(a)) print(a) """

  • Python内建类型str源码学习

    目录 引言 1 Unicode 2 Python中的Unicode 2.1 Unicode对象的好处 2.2 Python对Unicode的优化 3 Unicode对象的底层结构体 3.1 PyASCIIObject 3.2 PyCompactUnicodeObject 3.3 PyUnicodeObject 3.4 示例 4 interned机制 5 总结 引言 “深入认识Python内建类型”这部分的内容会从源码角度为大家介绍Python中各种常用的内建类型. 在介绍常用类型str之前,在上

  • Python读写unicode文件的方法

    本文实例讲述了Python读写unicode文件的方法.分享给大家供大家参考.具体实现方法如下: #coding=utf-8 import os import codecs def writefile(fn, v_ls): f = codecs.open(fn, 'wb', 'utf-8') for i in v_ls: f.write(i + os.linesep) f.close() def readfile(fn): f = codecs.open(fn,'r','utf-8') ls =

  • python2 中 unicode 和 str 之间的转换及与python3 str 的区别

    在python2中字符串分为 unicode 和 str 类型 Str To Unicode 使用decode(), 解码 Unicode To Str 使用encode(), 编码 返回数据给前端时需要先将unicode转换为str类型, 事实上, python2 中的 str 就是一串字节(byte), 而网络通信时, 传输的就是字节. 如果前端需要接收json数据, 需要使用 json.dumps() 将数据转换为json格式进行返回, 当数据是嵌套类型的数据, 内层的数据可能无法直接转换

  • python去掉 unicode 字符串前面的u方法

    有时我们会碰到类似下面这样的 unicode 字符串: u'\xe4\xbd\xa0\xe5\xa5\xbd' 这明显不是一个正确的 unicode 字符串,可能是在哪个地方转码转错了. 我们要想得到正确的 unicode 字符串首先就必须先将这个字符串转成非 unicode 字符串, 然后再进行解码.按照普通的办法进行 encode 肯定是不行的,因为这不是一个正确的 unicode 字符串: In [1]: u'\xe4\xbd\xa0\xe5\xa5\xbd'.encode('utf8')

随机推荐