Python笔记|字符串合并、切片、索引

一、合并

字符串可以用 + 合并(粘到一起),也可以用 * 重复:

>>> 3 * 'un' + 'ium'
'unununium'

相邻的两个或多个字符串字面值(引号标注的字符)会自动合并:

>>> 'Py' 'thon'
'Python'

拼接分隔开的长字符串时,这个功能特别实用:
>>> text = ('Put several strings within parentheses ' 'to have them joined together.')
>>> text
'Put several strings within parentheses to have them joined together.'

这项功能只能用于两个字面值,不能用于变量或表达式。
合并多个变量,或合并变量与字面值,要用 +

>>> prefix = 'Py'
>>> prefix + 'thon'
'Python'

二、索引

字符串支持 索引(下标访问),第一个字符的索引是 0。单字符没有专用的类型,就是长度为一的字符串:

>>> word = 'Python'
>>> word[0]
P
>>> word[5]
n

索引还支持负数,用负数索引时,从右边开始计数:

>>>** word[-1]
n
>>> word[-2]
o
>>> word[-6]
P

-0 和 0 一样,因此,负数索引从 -1 开始。

三、切片

字符串还支持切片。索引可以提取单个字符,切片则提取子字符串。

>>> word[0:2] #下标0和1
Py
>>>** word[2:5] # 下标 2 (包括) 到下标 5 (不包括)
tho

  • 切片省略开始索引时,默认值为 0,省略结束索引时,默认为到字符串的结尾。

>>> word[:2] # 默认从0下标开始但不包括下标2
Py
>>>** word[4:] #从下标4开始到最后
on
>>> word[-2:] # 从倒数第二个下标(包括在内)到末尾的字符
on

s [:i] + s [i:] 总是等于 s

>>>** word[:2] + word[2:]
Python
>>>= word[:4] + word[4:]
Python

切片索引指向的是字符之间 ,第一个字符的左侧标为 0,最后一个字符的右侧标为 nn 是字符串长度。

对于使用非负索引的切片,如果两个索引都不越界,切片长度就是起止索引之差。例如, word[1:3] 的长度是 2。

索引越界会报错:
>>> word[42]
>>> Traceback (most recent call last): File "<stdin>", line 1, in <module> IndexError: string index out of range

但切片会自动处理越界索引:
>>>** word[4:42]
on
>>> word[42:]
''

  • Python 字符串不能修改,是不可变对象。因此,为字符串中某个索引位置赋值会报错:

具有固定值的对象。不可变对象包括数字、字符串和元组。这样的对象不能被改变。如果必须存储一个不同的值,则必须创建新的对象。它们在需要常量哈希值的地方起着重要作用,例如作为字典中的键。

>>> word[0] = 'J '
Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: 'str' object does not support item assignment

>>> word[2:] = 'py'
Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: 'str' object does not support item assignment

要生成不同的字符串可以拼接:

>>> 'J' + word[1:]
'Jython'
>>>** word[:2] + 'py'
'Pypy'

内置函数 [len()] 可以返回字符串的长度:

>>> s = 'supercalifragilisticexpialidocious'
>>> len(s)
34

相关推荐
四口鲸鱼爱吃盐19 分钟前
Pytorch | 利用VMI-FGSM针对CIFAR10上的ResNet分类器进行对抗攻击
人工智能·pytorch·python
四口鲸鱼爱吃盐27 分钟前
Pytorch | 利用PI-FGSM针对CIFAR10上的ResNet分类器进行对抗攻击
人工智能·pytorch·python
小陈phd44 分钟前
深度学习之超分辨率算法——SRCNN
python·深度学习·tensorflow·卷积
CodeClimb1 小时前
【华为OD-E卷-简单的自动曝光 100分(python、java、c++、js、c)】
java·python·华为od
数据小小爬虫1 小时前
如何利用Python爬虫获取商品历史价格信息
开发语言·爬虫·python
NiNg_1_2341 小时前
Python的sklearn中的RandomForestRegressor使用详解
开发语言·python·sklearn
黑色叉腰丶大魔王1 小时前
《基于 Python 的网页爬虫详细教程》
开发语言·爬虫·python
laity171 小时前
爬取小说案例-BeautifulSoup教学篇
爬虫·python
WANGWUSAN661 小时前
Python高频写法总结!
java·linux·开发语言·数据库·经验分享·python·编程
西洼工作室2 小时前
【java 正则表达式 笔记】
java·笔记·正则表达式