美文网首页
【Python入门】4.Python编程基础之字符编码

【Python入门】4.Python编程基础之字符编码

作者: Lareinababy | 来源:发表于2019-11-20 20:50 被阅读0次

    本节摘要:字符编码;输出格式化


    Daily Record:每天一纪念,记录下python的学习历程,入门学习笔记与心得。本学习笔记主要基于廖雪峰大大的Python教程。不积跬步,无以至千里~ .゚(ง •̀_•́)ง


    文章目录

    • 字符编码
    • 输出格式化

    字符编码

    计算机以二进制储存和处理各类数据,美国人发明了计算机,因而他把127个字符编码到计算机中,包括英文字母、数字和一些符号,每个字符有对应的编码,这个编码表就是ASCII编码。

    然而时间上的语言多种多样,其他语言只用一个字节处理显然是不够的,因而各个国家制定了各自的编码,中国制定了GB2312编码,用来把中文编进去,日本把日文编到Shift_JIS里,韩国把韩文编到Euc-kr里。由于各国的标准不同,编码中必然会出现冲突,多语言混合的文本中可能就会出现乱码。为了解决乱码的出现,Unicode应运而生,它把所有语言都统一到一套编码里,避免出现乱码。相比ASCII编码的一个字节,Unicode通常是用两个字节表示一个字符,极其偏僻的可能会用到4个字节。

    编码 区别
    ASCII编码 1个字节
    Unicode编码 2个字节

    为了节约存储空间,而后又发展出了一种可自动调整字节数的UTF-8编码。以下是三种编码的比较。

    字符 ASCII Unicode UTF-8
    A 01000001 00000000 01000001 01000001
    x 01001110 00101101 11100100 10111000 10101101

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

    在计算机内存中,统一使用Unicode编码,当需要保存到硬盘或者需要传输的时候,就转换为UTF-8编码。

    用记事本编辑的时候,从文件读取的UTF-8字符被转换为Unicode字符到内存里,编辑完成后,保存的时候再把Unicode转换为UTF-8保存到文件:

    Python的字符串

    Python提供了ord()和chr()函数,可以把字母和对应的数字相互转换:

    >>> ord('C')                               #ord()函数获取字母的整数表示
    67                                      
    >>> chr(67)                              #chr()函数把整数转化成对应字母
    C                                         
    >>> b'ABC'                                  #用b''或""表示bytes类型的数据
    >>> b'ABC'.decode('ascii')                  #用.decode()可以把bytes转化为str   
    ABC                                        
    >>> 'ABC'.encode('ascii')                   #用.encode()可以把str转化为bytes   
    b'ABC'                                    
    >>> len('中文')                              #读取字符长度  
    2                                          
    >>> len('中文'.encode('utf-8'))              #读取字节长度  
    6                                          
    
    
    

    输出格式化

    日常生活中常会输出类似'亲爱的xxx你好!你xx月的话费是xx,余额是xx'之类的字符串,而xxx的内容都是根据变量变化的,所以,需要一种简便的格式化字符串的方式。
    在Python中,用实现,举例如下:

    >>> 'hello, %s' % ‘world’
    ‘hello, world'
    >>> 'Hi, %s, you have $%d.' % ('Lareina', 100000)
    'Hi, Lareina, you have $100000.'
    

    常见的占位符

    常见的占位符 代表
    %s 字符串
    %d 整数
    %f 浮点数
    %x 十六进制整数

    有几个%?占位符,后面就跟几个变量或者值,顺序要对应好。如果只有一个%?,括号可以省略。

    其中,格式化整数和浮点数还可以指定是否补0和整数与小数的位数:

    >>> '%2d-%02d' % (3,1)
    ' 3-01'
    >>> '$.2f' % 3.1415926
    '3.14'
    

    如果你不太确定应该用什么,%s永远起作用,它会把任何数据类型转换为字符串:

    >>> 'Age: %s. Gender: %s' % (25, False)
    'Age: 25. Gender: False'
    

    对于Unicode字符串,用法完全一样,但最好确保替换的字符串也是Unicode字符串:

    >>> u'Hi, %s' % u'Lareina'
    >'Hi, Lareina'
    

    有些时候,字符串里面的%是一个普通字符怎么办?这个时候就需要转义,用%%来表示一个%:

    >>> 'growth rate: %d %%' % 8
    'growth rate: 8 %'
    
    >>>print('%5d' % 333)                         #向左保留5位占位符
      333
    >>>print('%05d' % 333)                        #向左保留5位占位符并补0
    00333
    >>>print('%.2f' % 3.1415926)                  #四舍五入保留两位小数
    3.14
    

    Python中的除法

    >>>print(5/3)                                 #一般除法
    1.6666666666666667
    >>>print(5//3)                                #地板除
    1
    >>>print(5%3)                                 #取余数
    2
    

    相关文章

      网友评论

          本文标题:【Python入门】4.Python编程基础之字符编码

          本文链接:https://www.haomeiwen.com/subject/rjeaictx.html