1、使用[start🔚step]分片
分片操作(slice)可以从一个字符串中抽取子字符串(字符串的一部分)。我们使用一对方括号、起始偏移量 start、终止偏移量 end 以及可选的步长 step 来定义一个分片。其中一些可以省略。分片得到的子串包含从 start 开始到 end 之前的全部字符。
• [:] 提取从开头到结尾的整个字符串
• [start:] 从 start 提取到结尾
• [:end] 从开头提取到 end - 1
• [start:end] 从 start 提取到 end - 1
• [start🔚step] 从 start 提取到 end - 1,每 step 个字符提取一个
与之前一样,偏移量从左至右从 0、1 开始,依次增加;从右至左从 -1、-2 开始,依次减小。如果省略 start,分片会默认使用偏移量 0(开头);如果省略 end,分片会默认使用偏移量 -1(结尾)。
我们来创建一个由小写字母组成的字符串:

letters = ‘abcdefghijklmnopqrstuvwxyz’

仅仅使用 : 分片等价于使用 0 : -1(也就是提取整个字符串):

letters[:]
 ‘abcdefghijklmnopqrstuvwxyz’

下面是一个从偏移量 20 提取到字符串结尾的例子:

letters[20:]
 ‘uvwxyz’

现在,从偏移量 10 提取到结尾:

letters[10:]
 ‘klmnopqrstuvwxyz’

下一个例子提取了偏移量从 12 到 14 的字符(Python 的提取操作不包含最后一个偏移量对应的字符):

letters[12:15]
 ‘mno’

提取最后三个字符:

letters[-3:]
 ‘xyz’

下面一个例子提取了从偏移量为 18 的字符到倒数第 4 个字符。注意与上一个例子的区别:
当偏移量 -3 作为开始位置时,将获得字符 x;而当它作为终止位置时,分片实际上会在偏移量 -4 处停止,也就是提取到字符 w:

letters[18:-3]
 ‘stuvw’

接下来,试着提取从倒数第 6 个字符到倒数第 3 个字符:

letters[-6:-2]
 ‘uvwx’

如果你需要的步长不是默认的 1,可以在第二个冒号后面进行指定,就像下面几个例子所示。
从开头提取到结尾,步长设为 7:

letters[::7]
 ‘ahov’

从偏移量 4 提取到偏移量 19,步长设为 3:

letters[4:20:3]
 ‘ehknqt’

从偏移量 19 提取到结尾,步长设为 4:

letters[19::4]
 ‘tx’

从开头提取到偏移量 20,步长设为 5:

letters[:21:5]
 ‘afkpu’

(记住,分片中 end 的偏移量需要比实际提取的最后一个字符的偏移量多 1。)
是不是非常方便?但这还没有完。如果指定的步长为负数,机智的 Python 还会从右到左反向进行提取操作。下面这个例子便从右到左以步长为 1 进行提取:

letters[-1::-1]
 ‘zyxwvutsrqponmlkjihgfedcba’

事实上,你可以将上面的例子简化为下面这种形式,结果完全一致:

letters[::-1]
 ‘zyxwvutsrqponmlkjihgfedcba’

分片操作对于无效偏移量的容忍程度要远大于单字符提取操作。在分片中,小于起始位置的偏移量会被当作 0,大于终止位置的偏移量会被当作 -1,就像接下来几个例子展示的一样。
提取倒数 50 个字符:

letters[-50:]
 ‘abcdefghijklmnopqrstuvwxyz’

提取从倒数第 51 到倒数第 50 个字符:

letters[-51:-50]
 ‘’

从开头提取到偏移量为 69 的字符:

letters[:70]
 ‘abcdefghijklmnopqrstuvwxyz’

从偏移量为 70 的字符提取到偏移量为 71 的字符:

letters[70:71]
 ‘’

2、len() 函数可用于计算字符串包含的字符数:

empty = “”
 len(empty)
 0

python 字符串左移 python字符串偏移_python

3、使用内置的字符串函数 split() 可以基于分隔符将字符串分割成由若干子串组成的列表。
所谓列表(list)是由一系列值组成的序列,值与值之间由逗号隔开,整个列表被方括号所包裹。

todos = ‘get gloves,get mask,give cat vitamins,call ambulance’
 todos.split(’,’)
 [‘get gloves’, ‘get mask’, ‘give cat vitamins’, ‘call ambulance’]

上面例子中,字符串名为 todos,函数名为 split(),传入的参数为单一的分隔符 ‘,’。如果不指定分隔符,那么 split() 将默认使用空白字符——换行符、空格、制表符。

todos.split()
 [‘get’, ‘gloves,get’, ‘mask,give’, ‘cat’, ‘vitamins,call’, ‘ambulance’]

即使不传入参数,调用 split() 函数时仍需要带着括号,这样 Python 才能知道你想要进行函数调用。
4、join() 的调用顺序看起来有点别扭,与
split() 相反,你需要首先指定粘合用的字符串,然后再指定需要合并的列表:string.
join(list)。因此,为了将列表 lines 中的多个子串合并成完整的字符串,我们应该使用语句:’\n’.join(lines)。下面的例子将列表中的名字通过逗号及空格粘合在一起:

crypto_list = [‘Yeti’, ‘Bigfoot’, ‘Loch Ness Monster’]
 crypto_string = ', '.join(crypto_list)
 print(‘Found and signing book deals:’, crypto_string)
 Found and signing book deals: Yeti, Bigfoot, Loch Ness Monste