美文网首页Python学习笔记
Python学习笔记01-字符串

Python学习笔记01-字符串

作者: 明阳似海 | 来源:发表于2018-10-01 19:46 被阅读0次

    字符串

    字符串转换

    ord()函数,将字符串的内存值显示成整数(将str的显示值转换为int,可以使用int(),如str1 = '123' i = int(str1) 则i = 123 ),chr()函数把整数依照ASCII或Unicode编码成字符串。

    >>>ord('A')
    65
    >>> ord('中')
    20013
    >>>chr(66)
    'B'
    >>> chr(25991)
    '文'
    
    字符串编码

    Python中bytes类型的数据用带b前缀的单引号或双引号表示:

    x=b'ABC'
    

    str类型与bytes类型的区别在于str默认使用Unicode编码,而bytes只占用一个字节ASCII编码。
    以Unicode表示的str通过encode()方法可以编码为指定的bytes,如:

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

    反过来,如果从网络或磁盘上读取了字节流,那么读到的数据就是bytes。要把bytes变为str,就需要用decode()方法:

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

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

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

    len()函数计算的是字符数,如果希望获得字节数,需要转换为bytes类型。

    >>>len('中文')
    2
    >>>len('中文'.encode('utf-8'))
    6
    

    在操作字符串是,经常会遇到str和bytes的互相转换,为了避免乱码问题,应当坚持使用UTF-8编码对str和bytes进行转换。由于python源代码也是一个文本文件,所以,当你的源代码中包含中文的时候,在保存代码时,务必指定保存为UTF-8编码,当Python解释器读取源代码时,为了让它按UTF-8编码读取,通常在文件开头写上这两行:

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

    第一行是为了告诉Linux/OS X系统,这是一个Python可执行程序,Windows系统会忽略此行;
    第二行注释是为了告诉Python解释器,按照UTF-8编码读取源代码,否则,你在源代码中写的中文输出可能会有乱码。

    字符串格式化

    在Python中格式化方式与C语言类似,用%实现,如下:

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

    常见的占位符有:

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

    %需要使用%来转义,如%%;
    使用format()函数进行字符格式化,字符串内使用{0}、{1}...,如下:

    >>>'Hello,{0},float{1:1f}'.format('Marvin',17.125)
    'Hello, Marvin,folat17.1'
    

    学习资料源自廖雪峰的官方网站

    相关文章

      网友评论

        本文标题:Python学习笔记01-字符串

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