zoukankan      html  css  js  c++  java
  • python小知识点随笔

    可能会有不局限于Python语言的内容,文中“>>>”表示结果,而不是命令行交互的提示符

    1.关于字符串编码

    ASCII编码 占用一个字节 二进制11111111=十进制255 所以可以编码所有的字母和数字,比如大写字母A的编码是65,小写字母z的编码是122。但是由于各国语言自成一脉,难免冲突,一起出现会出现乱码。

    Unicode编码应运而生,编译所有语言。通常占用两个字节,生僻汉字需4需4个字节,字母数字编码补0,缺点是储存空间变大,若都是英文字母,不划算。

    UTF-8 可变长度编码集二者之长,把一个Unicode字符根据不同的数字大小编码成1-6个字节,常用的英文字母被编码成1个字节,汉字通常是3个字节。

    计算机内存统一使用Unicode编码,存储和传输则使用UTF-8编码。

     

    Python的字符串类型是str,内存中以Unicode存储,如果要在网络上传输,或保存在磁盘上,就要把str变为以字节为单位的bytes(编码)

    而从网络或磁盘上读取时,就要把bytes字节转换为str(解码)。对应的方法分别是encode()和decode()

    解码的时候,如果包含无法解码的字节就会报错:

    1 print(b'xe4xb8xad'.decode('utf-8'))
    >>> 中
    2 print(b'xe4xb8xadxff'.decode('utf-8'))
    >>>

      Traceback (most recent call last):
      ...
      UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 3: invalid start byte

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

    1 print(b'xe4xb8xadxff'.decode('utf-8', errors='ignore'))
    >>> 中

    当Python解释器读取源代码时,为了让它按UTF-8编码读取,我们通常在文件开头写上这两行:

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

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

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

    PS. 字符串的占位符‘%s’,会把任何数据类型转换为字符串。也可以用具体的数据类型的占位符如%d表示整数,%f表示浮点数,%x表示十六进制整数 而%需要%转义,通常‘%%’表示‘%’

    2.Python的复杂数据类型之 list,tuple,dict,set

  • 相关阅读:
    福大软工1816 · 第四次作业
    福大软工1816 · 第三次作业
    福大软工1816 · 第二次作业
    福大软工1816 · 第四次作业
    福大软工1816 · 第三次作业
    Alpha 冲刺 (4/10)
    Alpha 冲刺 (3/10)
    Alpha 冲刺 (2/10)
    Alpha 冲刺 (1/10)
    项目需求分析
  • 原文地址:https://www.cnblogs.com/sen-c7/p/10338881.html
Copyright © 2011-2022 走看看