Python基础四:字符串及编码

Python基础四:字符串及编码

Python基础系列内容为学习廖雪峰老师Python3教程的记录,廖雪峰老师官网地址:廖雪峰Python3教程


Author:yooongchun

Email:yooongchun@foxmail.com


  • 字符编码:计算机只能处理数字,其内部的电路处理的只有0、1数字,因而要处理类似字符串之类的内容就需要使用编码,即:建立一种数字到字符的映射关系,比如拿ASCII举例:A这个字符在计算机内被表示为整数65,而65转换为二进制为01000001,这里,还涉及到一个字节的概念,观察发现65的二进制表示,其有8个数字,这里我们称之为:8个比特(bit)代表一个字节(byte),8个比特代表一个字节是由早期的计算机设计时决定的,而A表示为一个字节这是由ASCII码编码规则确定的,其编码规则就是使用一个字节代码一个英文字母或者符号,所以ASCII码只能表示英文及几个符号,并且由于一个字节8位最小为 000000002=010 00000000 2 = 0 10 最大为 111111112=25510 11111111 2 = 255 10 ,因而其所能表示的字符总数不超过256个,鉴于此,国内制定了GB3212 标准用来编码汉字,而其他的国家也制定了相应的规范,比如日本的Shift_JIS,韩国的Euc-kr 等,但是这样造成的局面就是每个国家的规范都不统一,极不利于发展,鉴于此,出现了统一世界各国的标准:Unicode 编码!Unicode 编码统一了世界各国的编码,但是因为其涵盖的字符很多,所以需要使用更长的字节才能表示,比如一个字节最多表示256个字符,而2个字节最多表示 216=65536 2 16 = 65536 ,3个字节最多表示 224=16777216 2 24 = 16777216 等。Unicode 基本使用两个字节来进行编码,当表示英文字母这样用一个字节即可表示的字符时造成了储存空间上的浪费,鉴于此,出现了一种可变长的编码:UTF-8编码,UTF-8 编码会根据字符的不同将其编码为1至6个不同长度字节

  • Python中的编解码:

    Python3默认字符串以Unicode编码,因而Python中可混合多语言使用:

    print("hello,混合使用")

    对于单个字符的编码,Python提供了ord() 函数来获取其整数表示,反之,使用chr() 函数获得其编码结果:

    >>> ord("中")
    20013
    >>> chr(20013)
    '中'

    数据在网络上传输使用的是字节流,Python提供byte 类型的转换,其表示为:b'str' ,比如我们给出一个字节流:

    x=b'ABC'

    Python中Unicode编码的字符串可以使用encode 方法转换为字节流:

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

    注:无法用ASCII编码的字节会显示为\x

    以下通过实例展示字符编码占用的字节数:

    >>> len(b'ABC')
    3
    >>> len('中文'.encode('utf-8'))
    6

    可见,在utf-8编码中,每个英文字母占一个字节,而一个中文占了3个字节。

  • 格式化输出:Python中提供%+内容的形式来提供格式化输出

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

示例:输出三位同学的姓名,成绩。

  >>>student={'yooongchun':100,'Tim':99,'Tom':98}
  >>>for name,score in student.items():
  ...    print("你好,%s,你的数学成绩为:%d"%(name,score))
  ...
  你好,yooongchun,你的数学成绩为:100
  你好,Tim,你的数学成绩为:99
  你好,Tom,你的数学成绩为:98
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zoz.cool

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值