• 技术文章 >后端开发 >Python教程

    浅谈python学习之字符编码与字符串

    青灯夜游青灯夜游2018-10-29 18:01:47转载882
    本篇文章给大家带来的内容是浅谈python学习之字符编码与字符串。有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助。

    字符编码是什么?

    例如汉字”,可以用以下表示

    十进制:20013

    二进制:01001110 00101101(unicode)/11100100 10111000 10101101(utf-8)

    十六进制:u4e2d

    ascii编码

    unicode编码

    utf-8编码(可变长的unicode编码)

    UTF-8编码把一个Unicode字符根据不同的数字大小编码成1-6个字节,常用的英文字母被编码成1个字节,汉字通常是3个字节,只有很生僻的字符才会被编码成4-6个字节。

    字符ASCIIUnicodeUTF-8
    A0100000100000000 0100000101000001
    x01001110 0010110111100100 10111000 10101101

    1)如果你要传输的文本包含大量英文字符,用UTF-8编码就能节省空间;

    2)ASCII编码实际上可以被看成是UTF-8编码的一部分,所以,大量只支持ASCII编码的历史遗留软件可以在UTF-8编码下继续工作。

    计算机系统通用的字符编码工作方式:

    内存:统一unicode编码

    硬盘、传输:转换为utf-8

    浏览网页的时候,服务器会把动态生成的Unicode内容转换为UTF-8再传输到浏览器。

    Python的字符串

    相关函数

    'str'.encodeascii/utf-8)返回bytes字符串

    中文以ascii编码会报错

    'bytes'.decode(ascii/utf-8)返回str字符串

    bytes无法解码会报错,如果bytes中只有一小部分无效的字节,可以传入errors='ignore'忽略错误的字节

    >>> b'\xe4\xb8\xad\xff'.decode('utf-8', errors='ignore') '中'

    >>> len(b'ABC') 3 >>> len(b'\xe4\xb8\xad\xe6\x96\x87') 6 >>> len('中文'.encode('utf-8')) 6

    在最新的Python 3版本中,字符串是以Unicode编码的,也就是说,Python的字符串支持多语言

    Python的字符串类型是str,如果要在网络上传输,或者保存到磁盘上,就需要把str变为bytes

    >>为了避免乱码问题,应当始终坚持使用UTF-8编码对strbytes进行转换<<

    str和bytes的区别

    >>> 'ABC'.encode('ascii') b'ABC' >>> '中文'.encode('utf-8') b'\xe4\xb8\xad\xe6\x96\x87'

    bytes中,无法显示为ASCII字符的字节,用\x##显示。

    .py文件中含中文要用utf-8编码

    #!/usr/bin/env python3 # -*- coding: utf-8 -*-

    第一行注释是为了告诉Linux/OS X系统,这是一个Python可执行程序,Windows系统会忽略这个注释;

    第二行注释是为了告诉Python解释器,按照UTF-8编码读取源代码,否则,你在源代码中写的中文输出可能会有乱码。

    >>编辑器用UTF-8 without BOM<<

    字符串格式化问题

    >>> 'Hello, %s' % 'world' 'Hello, world' >>> 'Hi, %s, you have $%d.' % ('Michael', 1000000) 'Hi, Michael, you have $1000000.'

    %运算符

    >>> 'growth rate: %d %%' % 7 'growth rate: 7 %'

    占位符替换内容
    %d整数
    %f浮点数
    %s字符串
    %x十六进制整数

    format()

    另一种格式化字符串的方法是使用字符串的format()方法,它会用传入的参数依次替换字符串内的占位符{0}{1}……,不过这种方式写起来比%要麻烦得多:

    >>> 'Hello, {0}, 成绩提升了 {1:.1f}%'.format('小明', 17.125) 'Hello, 小明, 成绩提升了 17.1%'

    以上就是浅谈python学习之字符编码与字符串的详细内容,更多请关注php中文网其它相关文章!

    声明:本文转载于:博客园,如有侵犯,请联系admin@php.cn删除
    上一篇:python什么是递归?两种优先搜索算法的实现 (代码示例) 下一篇:python中numpy的array数据类型有哪些?(代码详解)
    php培训_php实战培训【立即报名】-php中文网第20期

    相关文章推荐

    • 【活动】充值PHP中文网VIP即送云服务器• html特殊符号示例 html特殊字符编码对照表_html5教程技巧• js字符编码函数区别分析_javascript技巧• php中的字符编码转换函数用法示例_php技巧• php urlencode()与urldecode()函数字符编码原理详解_php技巧
    1/1

    PHP中文网