python如何将unicode转换为中文(python unicode 转换)

  • 时间:
  • 7627人关注

这是一篇关于python相关的编程问答内容,被923位程序员关注,内容涉及到python、unicode、转换中文、python unicode 转换等,由石泰然 编辑补充,一起来看下大家的回答。

码农之家
精选回答2:python中将╲╲uxxxx转换为Unicode字符串的方法

8小时12分钟前回答

今天碰到一个很有意思的问题,需要将普通的 Unicode字符串转换为 Unicode编码的字符串,如下:

将 \\u9500\\u552e 转化为 \u9500\u552e 也就是 销售 。

乍一看感觉挺简单的,用 re 库将前面的反斜杠去掉即可,但是在替换的过程中会抛出如下错误:

Traceback (most recent call last):
  File "<pyshell#15>", line 1, in <module>
    re.sub(r"(\)\u", r'', t)
  File "D:\Python36\lib\re.py", line 191, in sub
    return _compile(pattern, flags).sub(repl, string, count)
  File "D:\Python36\lib\re.py", line 301, in _compile
    p = sre_compile.compile(pattern, flags)
  File "D:\Python36\lib\sre_compile.py", line 562, in compile
    p = sre_parse.parse(p, flags)
  File "D:\Python36\lib\sre_parse.py", line 855, in parse
    p = _parse_sub(source, pattern, flags & SRE_FLAG_VERBOSE, 0)
  File "D:\Python36\lib\sre_parse.py", line 416, in _parse_sub
    not nested and not items))
  File "D:\Python36\lib\sre_parse.py", line 765, in _parse
    p = _parse_sub(source, state, sub_verbose, nested + 1)
  File "D:\Python36\lib\sre_parse.py", line 416, in _parse_sub
    not nested and not items))
  File "D:\Python36\lib\sre_parse.py", line 502, in _parse
    code = _escape(source, this, state)
  File "D:\Python36\lib\sre_parse.py", line 362, in _escape
    raise source.error("incomplete escape %s" % escape, len(escape))
sre_constants.error: incomplete escape \u at position 3

大概意思就是去掉前面的反写杠之后剩下的 \u 不能组成完整的字符。

到这里问题好像有点难以解决了,这时候我们会放弃吗?

当然不会,到谷歌上搜一下,发现还真有人碰到过这个问题,解决方法也是十分的巧妙。

竟然还可以使用 json 库的 loads 方法 ...

解决方法如下:

import json
s = '\\u9500\\u552e'
print(json.loads(f'"{s}"'))

PS:python3 将字符串unicode转换为中文

记录一个经常会遇到的问题:

得到的文本打印出来是“\uxxxx”的字符串格式,在python3中使用text.decode('unicode_escape')会报错:‘str' object has no attribute 'decode'

正确的姿势是:

text.encode('utf-8').decode("unicode_escape")

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持码农之家。

展开问题
码农之家
精选回答3:python2 中 unicode 和 str 之间的转换及与python3 str 的区别

6小时58分钟前回答

在python2中字符串分为 unicode 和 str 类型

  Str To Unicode 使用decode(), 解码
  Unicode To Str 使用encode(), 编码

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

python2 默认情况下 字符串 的类型是 str 类型, 如果需要得到 unicode 类型的字符串, 需要使用下面的方式进行声明:

my_str = u"lowmanisbusy" # 在变量前面加上 u

在 python2 中如果没有重新指定字符编码, 定义中文的字符串时, 需要加上 "u", 指明该字符串为 unicode 类型, 指定使用unicode编码对其进行编码保存:

my_zh_str = u"渣男不但丑" # 在变量前面加上 u

unicode编码: unicode编码为世界上所有字符都分配了一个唯一编号, 为十六进制, 如中文简体汉字 “渣” 的 Unicode编号就是 6E23, 在 python2就是 "\u6e23", 但是unicode仅仅定义了每个字符的编号,并没有定义如何将这个编号进行存储的方式,所以后来出现了utf-8, gbk等编码格式, 它们都是 unicode 的一种实现方式, 仍然使用了unicode 中的唯一编号, 个人对其的简单理解就是在unicode编码的基础之上又定义了对字符的存储方式.

在python3中字符串分为 str 和 bytes 两种类型

  Str To Bytes 使用 encode(), 编码
  Bytes To Str 使用 decode(), 解码

这里需要说明的是, python3 中 bytes 类型的字符串, 就相当于 python2 中 str 类型的字符串, python3中没有unicode类型的字符串, 这里其实涉及到默认编码的问题, python3默认字符编码为:utf-8, python2默认字符编码为:ASCII, ASCII码 包含了128个字符, 其中包括所有的英文字符, 阿拉伯数字, 标点符号, 控制符号等, 却没有中文, 中文是象形文字, 需要使用到更多的字节进行组合来表示出每个汉字, 因此ASCII是无法满足对中文的表示的, 所以 python2中如果没有重新设置字符编码的话,代码中就不允许出现str类型的中文字符串(可以指定为unicode类型), 因为Cpython2解释器无法识别. 至于 ASCII, UNICODE, UTF-8 之间的关系与区别这里就不细说了, 可以自行去了解一下( utf-8编码  是  unicode编码 的一种实现方式, 个人理解可以认为是下面这样一种关系: utf-8 <---> unicode <--->byte, 最终,数据的传输仍然是以二进制的形式一个一个字节进行传输的)

默认情况下,python3中字符串的类型为 str, 在web框架中, 会自动将 str转换成 byte 向前端返回.

当需要将某种编码格式的bytes转换另外一种编码格式的bytes时需要先按原来的编码格式进行解码成str类型, 再使用新的编码格式转换为bytes类型

如: 若存在变量 my_bt, 其为编码格式 gbk 的 bytes, 需将其转换为utf-8的编码格式,需要进行如下的处理:

my_str = my_bt.decode("gbk") # 解码
  my_bt = my_str.encode("utf-8") # 重新编码

 因为 python3 中没有 unicode 类型的字符串, 所有在 python3 中使用下面这种方式定义字符串是没有意义的

my_str = u"渣男不但丑"

ps:下面看下Python2之unicode转字符串

str.encode('unicode-escape').decode('string_escape')

总结

以上所述是小编给大家介绍的python2 中 unicode 和 str 之间的转换及与python3 str 的区别,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对码农之家网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

展开问题
码农之家
精选回答4:python3 unicode列表转换为中文的实例

23小时11分钟前回答

查了很多很多的资料无果,果然知乎牛逼,完美解决。

爬取网站时,最终得到list内容,编码为unicode,想让其转换为汉字并输出。

需要提取的为下图中unicode部分:

python3 unicode列表转换为中文的实例

保存为列表,然后使用for循环:

text为获取的网页。

pat = '"group": {"text": "(.*?)"'
text_list = re.compile(pat).findall(text)
for i in text_list:
 print(i.encode('latin-1').decode('unicode_escape'))

输出结果为:

python3 unicode列表转换为中文的实例

以上这篇python3 unicode列表转换为中文的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持码农之家。

展开问题

参考资料

  • Python科学计算

    Python科学计算

    本书详细介绍Python科学计算中最常用的扩展库NumPy、SciPy、matplotlib、Pandas、SymPy、TTK、Mayavi、OpenCV、Cython,涉及数值计算、界面制作、三维可视化、图像处理、提高运算效率等多方面的内容。所

    大小:59.5 MBPython

    立即下载
  • 深入浅出深度学习:原理剖析与Python实践

    深入浅出深度学习:原理剖析与Python实践

    《深入浅出深度学习:原理剖析与Python实践》 介绍了深度学习相关的原理与应用,全书共分为三大部分,第一部分主要回顾了深度学习的发展历史,以及Theano的使用;第二部分详细讲解了与深

    大小:92.1 MB深度学习

    立即下载
  • Python从小白到大牛

    Python从小白到大牛

    PyCharm厂家JetBrains公司官方推荐用书!赠送教学课件24章,300个示例源代码,4个完整实战项目,教学视频2500分钟!并提供实时在线答疑服务!

    大小:235.4 MBpython

    立即下载
  • Python程序设计基础

    Python程序设计基础

    本书共13章:第1章详细介绍Python基础知识与定义,Python开发工具配备与应用,拓展库安裝与应用;第2章解读Python运算符与关系式及其内嵌涵数的使用方法;第3章解读目录、元组、词典、结合等

    大小:39.7 MBPython编程

    立即下载
  • Python金融数据分析

    Python金融数据分析

    大小:131.9 MBPython

    立即下载
  • 机器人Python极客编程入门与实战

    机器人Python极客编程入门与实战

    大小:25.8MBPython编程

    立即下载

更多回答

28小时33分钟前回答

python怎么获得unicode编码

python怎么获得unicode编码 ……

16小时21分钟前回答

python3 unicode列表转换为中文的实例

查了很多很多的资料无果,果然知乎牛逼,完美解决。 爬取网站时,最终得到list内容,编码为unicode,想让其转换为汉字并输出。 需要提取的为下图中unicode部分: 保存为列表,然后使用for循环: text为获取的网页。 pat = '"group": {"text": "(.*?)"'text_list = re.compile(pat).findall(text)for i in text_list: print(i.encode('latin-1').decode('unicode_escape')) 输出结果为: 以上这篇python3 unicode列表转换为中文的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持码农之家。 ……