数据,字符,字节串与字符串

数据在计算机内的存储以及编码格式

  • 8bit为1字节,1bit是1位二进制
  • ASCII码一个字符一字节
  • Unicode一个字符2字节
  • 字母字符的ASCII码和Unicode码之间的关系是:ASCII码前直接加八位0就得到了它的Uincode码,但是如果大部分字符都是英文,unicode比ASCII浪费了将近一倍的字符,所以诞生了UTF-8编码
  • UTF-8编码是可变编码,能把一个Unicode字符根据不同的数字大小编码为1-6个字节,英文字母一般为1个字节,汉字通常为3个字节,生僻字符更长。同时ASCII编码可以被看作是UTF-8编码的一部分

python中的字符

  • 在python中,提供一对函数
    • ord()由字符获取字符的整数表示
    • chr()由字符的整数表示获取对应的字符
  • 同时字符也可用十六进制直接表示

字符串与字节串Bytes

  • 字符串在内存中一Unicode表示,一个字符对应若干个字节。但是如果在网络上传输,或者保存到磁盘中需要把str类型转换为bytes类型
  • bytes类型的数据使用带b前缀的引号表示,如:b“abc”
  • 使用encode()可以将str编码为指定的bytes,如:“中文”.encode('UTF-8')
  • 使用decode()可以将bytes解码为str,如:b“abc”.decode("ascii")
  • 如果bytes中包含无法解码的字节,decode()方法会报错,如果bytes中只有一小部分无效的字节,可以传入errors='ignore'忽略错误的字节:b'\xe4\xb8\xad\xff'.decode('utf-8', errors='ignore')
  • 使用len()可以计算str包含的字符数量,如果传入的是bytes,得到是字节数

字符串的格式化

传统传参方式

%传参

>>> 'Hi, %s, you have $%d.' % ('Michael', 1000000) 
->'Hi, Michael, you have $1000000.'
  • %d,整数
  • %s,字符型
  • %f,浮点型
  • %s,十六进制整数

其中,格式化整数和浮点数还可以控制精度

可以使用辅助符号"m"

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

如果整数位数不够2位,%2d使用空格填充,%02d使用0填充。如果小数的位数大于两位,%2f保留2位小数。

  • 如果字符串中只是想单纯的加入%,则使用%%
  • %s可以把任意数据类型转化为字符串

传统传参方式

format格式化传参赋值

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

其中,{0},{1}表示传参的占位符的索引:用于指示规范格式的开始.1f表示保留一位小数

传统传参方式

最后一种格式化字符串的方法是使用以f开头的字符串,称之为f-string,它和普通字符串不同之处在于,字符串如果包含{xxx},就会以对应的变量替换:

>>> r = 2.5 
>>> s = 3.14 * r ** 2 
>>> print(f'The area of a circle with radius {r} is {s:.2f}') 
->The area of a circle with radius 2.5 is 19.62

上述代码中,{r}被变量r的值替换,{s:.2f}被变量s的值替换,并且:后面的.2f指定了格式化参数(即保留两位小数),因此,{s:.2f}的替换结果是19.62。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值