python的字符串

对于单个字符的编码,python提供了两个有意思的函数; ord()函数将单个字符转换为对应的整数形式,而chr()函数将编码转换为对应的单个字符。
>>>text = ord('你');
>>>text
20320
>>>chr(a)
'你'
由于python的 字符串类型是str, 在内存中以Unicode通常是2个字节表示一个字符,一个字节(byte)由8个比特(bit)组成 )表示,如果想要将信息存储到磁盘上就需要先将str变成 以字节为单位的bytes(每个字符都只占一个字节)。
python中对bytes类型的数据用带b前缀的单引号或双引号来表示:
x = b'ASD'

注意b'ASD'和'ASD'虽然长得很像,但是前者是每个字符只占一个字节的bytes数据,而后者是str数据。

python提供了enonde()和decode()方法进行编码

#encode()是将数据转换为bytes类型
>>>'ASD'.encode( ' ascii ' );
b'ASD'
>>>'ASD'.encode( ' utf-8 ' );
b'ASD'
>>>'中国'.encode( ' utf-8 ' );
b'\xe4\xb8\xad\xe5\x9b\xbd'

含有中文的str不能使用ASCII编码,中文编码的范围因为超出了ASCII编码的范围。

反过来,如果我们从磁盘上读取了字节流,那么就需要将bytes数据转换为str数据

python为我们提供了容错机制,即当读入的bytes数据有一部分是无效的,则可以传入errors = ' ignore '参数,忽略无效数据。

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

如果字符串太长,你又想偷懒让计算机来计算字符串的长度的话,len()函数就大有用武之地了。

>>>len( 'ASD' )
3
>>>len( '中国' )
2

对于bytes数据来说,len()函数又返回的是什么呢

>>>len('中国'.encode( ' utf-8 ' ));
6
>>>len(b'\xe4\xb8\xad\xe5\x9b\xbd');
6
>>>len( b'ASD')
3
可以看出, 一个str类型的英文字母对应于一个字节的bytes数据,而一个str类型的汉字对应于三个字节的bytes数据

那么,最后来看看当你想输出多个值的时候,例如‘我买了XX个XX花了XX元’,该如何输出呢?

name = '鸭脖';
>>>price = 20 ;
>>>num = 10 ;
>>>print( '我买了%d个%s花了%d元'%( num , name , price ) );
>>>print( '我买了%s个%s花了%s元'%( num , name , price ) );
我买了10个鸭脖花了20元
我买了10个鸭脖花了20元
可以看到,当多值输入的时候,需要利用%()来将数据完成输出的;当你不知道要输出的变量是整型还是字符型的时候,可以用%s作为占位符,因为 %s可以将所有的数据通通转换为字符串类型进行输出。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值