string 换行符_「基础知识」认识一下python中的string

cde413a388d2e6f4be43228ba1d23010.png

python 基础知识 string

认识一下python中的string

在python语言中,字符串是一种内建数据类型,是通过类str来表示和处理的。

string的创建

python中字符串的创建可以通过单引号,双引号或三个连续的引号表示,只不过三个连续的引号创建的字符串可以包括空白字符(比如换行符),不同的创建方式下,同样的字面值的内存地址是一样的

>>> str1 = 'hello'      >>> str2 = "hello">>> str3 = '''hello'''>>> str4 = """hello""">>> id(str1)3072807392>>> id(str2)3072807392>>> id(str3)3072807392>>> id(str4)3072807392

如果字符串是重复字符,也可以通过下面的方式创建

>>> str = 'a' * 3>>> str'aaa'

string的长度

在python3下,字符串是不可变的unicode码点序列,所以通过len函数获取string的长度,其实是获取string中unicode码点数。要想获取string的字节长度,可以通过str的encode()方法可以获取字节对象,进而获取字节长度

>>> len('hello')5>>> len('中国')2>>> '中国'.encode()      b'xe4xb8xadxe5x9bxbd'>>> len('中国'.encode())6

string前缀

在python中可以通过给string加前缀的方式,使string字面值有特殊的含义,目前有3种string前缀,且string前缀可以两两组合使用

  • r 表示后续字符串中反斜杠不进行转义, 取字面值
  • u 表示后续字符串为unicode码点
  • f 表示后续字符串为format字符串,python3.6引入
>>> str1 = r'hello  world'>>> str1'hello  world'>>> str2 = u'中国'>>> str2'中国'>>> width = 1>>> print(f'width: {width}')width: 1

这里稍微多说一点,在上面可以看到,b'xe4xb8xadxe5x9bxbd'和u'中国'都是表示的汉字“中国”,这是怎么情况呢?这里涉及到Unicode字符集和UTF-8编码的一点小知识。

在Unicode字符集中,通过2个字符中和国分别表示汉字“中”和“国”,而UTF-8编码通过如下方式对Unicode字符集进行编码

61a2bff4f5d33d0ac488591715c8456a.png

前面是对应的Unicode字符区间,后面是该区间内字符的UTF-8编码方式

以“中”字为例,Unicode码点为U-00004e2d,对应在图表中的第三行U-00000800 ~ U-0000FFFF区间,对应的UTF-8编码方式为1110 xxxx 10xx xxxx 10xx xxxx,其中x为Unicode码点U-00004e2d的二进制,从右到左排列。

45cbbafc3eed164d800421f23b27d361.png

由此可见b'xe4xb8xad'和中都是“中”字的表示方式

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值