【Python入门】第三章: Python变量和数据类型四

3. Python变量和数据类型四

3.8 Python的字符串编码

在python2中,字符串的编码问题是使用python2必经历的门槛,所幸到了python3,python3从编程语言的层面就减少了很多编码的问题,但是学习字符串编码还是很有必要的。

  • 为什么有编码问题

因为计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理。最早的计算机在设计时采用8个比特(bit)作为一个字节(byte),所以,一个字节能表示的最大的整数就是255(二进制11111111=十进制255),0 - 255被用来表示大小写英文字母、数字和一些符号,这种编码方式被称为ASCII编码,比如大写字母 A 的编码是65,小写字母 z 的编码是122。

  • Unicode的必要性

如果要表示中文,显然一个字节是不够的,至少需要两个字节,而且还不能和ASCII编码冲突,所以,中国制定了GB2312编码,用来把中文编进去。
类似的,日文和韩文等其他语言也有这个问题。为了统一所有文字的编码,Unicode应运而生。Unicode把所有语言都统一到一套编码里,这样就不会再有乱码问题了。
Unicode通常用两个字节表示一个字符,原有的英文编码从单字节变成双字节,只需要把高字节全部填为0就可以。

  • python3的编码

在python3中,默认使用UTF-8 Unicode来进行编码,因此我们可以在python中输入任意形式的Unicode字符串,都不会遇到像python2中遇到的问题(在python2中,需要显式指明该字符串是Unicode字符串),如果没有了解过python2,则完全可以忽略这一点,python3提供了更加简单易懂的编码方式。

s1 = '这是中文字符串'
s2 = 'this is an English string'
print(s1)
print(s2)

在python3中,中文字符串和英文字符串无异。

示例

请定义并打印中英文混合的字符串 “这是一句中英文混合的Python字符串:Hello World!”

# coding: utf-8
s = '这是一句中英文混合的Python字符串:Hello World!'
print(s

3.9 Python的字符串切片

字符串由一个个字符组成,每一个字符都有一个唯一的位置。比如字符串’ABC’,第一个字符是A,第二个字符是B,第三个字符是C。

因此我们可以使用位置的方式取出字符串中特定位置的字符,按照位置取字符串的方式使用中括号[]访问,这个时候可以把字符串看作是一个列表(一种新的数据类型,在后面会继续学习),不过需要注意的是,在程序的世界中,计数是从0开始的,使用0来表示第一个。

s = 'ABC'
a = s[0] # 第一个
b = s[1] # 第二个
c = s[2] # 第三个
print(a) # ==> A
print(b) # ==> B
print(c) # ==> C

有时候,我们会想获取字符串的一部分(子串),这个时候我们采取切片的方式获取,切片需要在中括号[]中填入两个数字,中间用冒号分开,表示子串的开始位置和结束位置,并且这是半闭半开区间,不包括最后的位置。

ab = s[0:2] # 取字符串s中的第一个字符到第三个字符,不包括第三个字符
print(ab) # ==> AB

我们定义一个更长的字符串,了解切片更多的细节。

s = 'ABCDEFGHIJK'

abcd = s[0:4] # 取字符串s中的第一个字符到第五个字符,不包括第五个字符

print(abcd) # ==> ABCD

cdef = s[2:6] # 取字符串s中的第三个字符到第七个字符,不包括第七个字符

print(cdef) # ==> CDEF

示例

请从字符串’AABCDEFGHHIJ’中,使用切片的方式取出’ABCDEFGH’

a = 'AABCDEFGHHIJ'
print(a[1:9])

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_42473228/article/details/125583055