python str 索引_Python基础教程之第二章---变量和字符串(3) 搬运

上一章是标题没改(1)有两章注意看一下 忘记写了 自己回去看看

Python截取字符串(字符串切片)方法详解

字符串本质上就是由多个字符组成的,Python 允许通过索引来操作字符,比如获取指定索引处的字符,获取指定字符在字符串中的位置等。

Python 字符串直接在方括号([])中使用索引即可获取对应的字符,其基本语法格式为:

string[index]

这里的 string 表示要截取的字符串,index 表示索引值。Python 规定,字符串中第一个字符的索引为 0、第二个字符的索引为 1,后面各字符依此类推。此外,Python 也允许从后面开始计算索引,最后一个字符的索引为 -1,倒数第二个字符的索引为 -2,依此类推。

【例 1】

s = 'crazyit.org is very good'
# 获取s中索引2处的字符
print(s[2]) # 输出a
# 获取s中从右边开始,索引4处的字符
print(s[-4]) # 输出g

除可获取单个字符之外,Python 也可以在方括号中使用范围来获取字符串的中间“一段”(被称为子串),其基本语法格式为:

string[start : end : step]

此格式中,各参数的含义如下:

  • string:要截取的字符串;
  • start:表示要截取的第一个字符所在的索引(截取时包含该字符)。如果不指定,默认为 0,也就是从字符串的开头截取;
  • end:表示要截取的最后一个字符所在的索引(截取时不包含该字符)。如果不指定,默认为字符串的长度;
  • step:指的是从 start 索引处的字符开始,每 step 个距离获取一个字符,直至 end 索引出的字符。step 默认值为 1,当省略该值时,最后一个冒号也可以省略。

【例 2】基本用法

s = 'crazyit.org is very good'
# 获取s中从索引3处到索引5处(不包含)的子串
print(s[3: 5]) # 输出 zy
# 获取s中从索引3处到倒数第5个字符的子串
print(s[3: -5]) # 输出 zyit.org is very
# 获取s中从倒数第6个字符到倒数第3个字符的子串
print(s[-6: -3]) # 输出 y g
#每隔 1 个,取一个字符
print(s[::2]) # 输出 caytogi eygo

【例 3】 start、end 以及 step 都可以省略。

# 获取s中从索引5处到结束的子串
print(s[5: ]) # 输出it.org is very good
# 获取s中从倒数第6个字符到结束的子串
print(s[-6: ]) # 输出y good
# 获取s中从开始到索引5处的子串
print(s[: 5]) # 输出crazy
# 获取s中从开始到倒数第6个字符的子串
print(s[: -6]) #输出crazyit.org is ver

此外,Python 字符串还支持用 in 运算符判断是否包含某个子串。例如如下代码:

# 判断s是否包含'very'子串
print('very' in s) # True
print('fkit' in s) # False

还可使用全局内置的 min() 和 max() 函数获取字符串中最小字符和最大字符。例如如下代码:

# 输出s字符串中最大的字符
print(max(s)) # z
# 输出s字符串中最大的字符
print(min(s)) # 空格

Python字符串大小写转换(3种)函数及用法

Python中,为了方便对字符串中的字母进行大小写转换,字符串变量提供了 3 种方法,分别是 title()、lower() 和 upper()。

Python title()方法

title() 方法用于将字符串中每个单词的首字母转为大写,其他字母全部转为小写,转换完成后,此方法会返回转换得到的字符串。如果字符串中没有需要被转换的字符,此方法会将字符串原封不动地返回。

title() 方法的语法格式如下:

str.title()

其中,str 表示要进行转换的字符串。

【例 1】

>>> str = "c.biancheng.net"
>>> str.title()
'C.Biancheng.Net'
>>> str = "I LIKE C"
>>> str.title()
'I Like C'

Python lower()方法

lower() 方法用于将字符串中的所有大写字母转换为小写字母,转换完成后,该方法会返回新得到的字符串。如果字符串中原本就都是小写字母,则该方法会返回原字符串。

lower() 方法的语法格式如下:

str.lower()

其中,str 表示要进行转换的字符串。

【例 2】

>>> str = "I LIKE C"
>>> str.lower()
'i like c'

Python upper()方法

upper() 的功能和 lower() 方法恰好相反,它用于将字符串中的所有小写字母转换为大写字母,和以上两种方法的返回方式相同,即如果转换成功,则返回新字符串;反之,则返回原字符串。

upper() 方法的语法格式如下:

str.upper()

其中,str 表示要进行转换的字符串。

【例 3】

>>> str = "i like C"
>>> str.upper()
'I LIKE C'

需要注意的是,以上 3 个方法都仅限于将转换后的新字符串返回,而不会修改原字符串。

Python去除字符串中空格(删除指定字符)的3种方法

用户输入数据时,很有可能会无意中输入多余的空格,或者在一些场景中,字符串前后不允许出现空格和特殊字符,此时就需要去除字符串中的空格和特殊字符。

这里的特殊字符,指的是制表符(t)、回车符(r)、换行符(n)等。

Python中,字符串变量提供了 3 种方法来删除字符串中多余的空格和特殊字符,它们分别是:

strip():删除字符串前后(左右两侧)的空格或特殊字符。
lstrip():删除字符串前面(左边)的空格或特殊字符。
rstrip():删除字符串后面(右边)的空格或特殊字符。

注意,Python 的 str 是不可变的(不可变的意思是指,字符串一旦形成,它所包含的字符序列就不能发生任何改变),因此这三个方法只是返回字符串前面或后面空白被删除之后的副本,并不会改变字符串本身。

Python strip()方法

strip() 方法用于删除字符串左右两个的空格和特殊字符,该方法的语法格式为:

str.strip([chars])

其中,str 表示原字符串,[chars] 用来指定要删除的字符,可以同时指定多个,如果不手动指定,则默认会删除空格以及制表符、回车符、换行符等特殊字符。

【例 1】

>>> str = "  c.biancheng.net tnr"
>>> str.strip()
'c.biancheng.net'
>>> str.strip(" ,r")
'c.biancheng.net tn'
>>> str
'  c.biancheng.net tnr'

分析运行结果不难看出,通过 strip() 确实能够删除字符串左右两侧的空格和特殊字符,但并没有真正改变字符串本身。

Python lstrip()方法

lstrip() 方法用于去掉字符串左右的空格和特殊字符。该方法的语法格式如下:

str.lstrip([chars])

其中,str 和 chars 参数的含义,分别同 strip() 语法格式中的 str 和 chars 完全相同。

【例 2】

>>> str = "  c.biancheng.net tnr"
>>> str.lstrip()
'c.biancheng.net tnr'

Python rstrip()方法

rstrip() 方法用于删除字符串右侧的空格和特殊字符,其语法格式为:

str.rstrip([chars])

str 和 chars 参数的含义和前面 2 种方法语法格式中的参数完全相同。

【例 3】

>>> str = "  c.biancheng.net tnr"
>>> str.rstrip()
'  c.biancheng.net'

Python字符串操作(查找,替换,分割和连接)方法及其使用

str 提供了如下常用的执行查找、替换等操作的方法:

  • startswith():判断字符串是否以指定子串开头。
  • endswith():判断字符串是否以指定子串结尾。
  • find():查找指定子串在字符串中出现的位置,如果没有找到指定子串,则返回 -1。
  • index():查找指定子串在字符串中出现的位置,如果没有找到指定子串,则引发 ValueError 错误。
  • replace():使用指定子串替换字符串中的目标子串。
  • translate():使用指定的翻译映射表对字符串执行替换。

如下代码示范了上面方法的用法:

s = 'crazyit.org is a good site'
# 判断s是否以crazyit开头
print(s.startswith('crazyit'))
# 判断s是否以site结尾
print(s.endswith('site'))
# 查找s中'org'的出现位置
print(s.find('org')) # 8
# 查找s中'org'的出现位置
print(s.index('org')) # 8
# 从索引为9处开始查找'org'的出现位置
#print(s.find('org', 9)) # -1
# 从索引为9处开始查找'org'的出现位置
print(s.index('org', 9)) # 引发错误
# 将字符串中所有it替换成xxxx
print(s.replace('it', 'xxxx'))
# 将字符串中1个it替换成xxxx
print(s.replace('it', 'xxxx', 1))
# 定义替换表:97(a)->945(α),98(b)->945(β),116(t)->964(τ),
table = {97: 945, 98: 946, 116: 964}
print(s.translate(table)) # crαzyiτ.org is α good siτe

上面代码中,查找‘org’在 s 字符串中出现的位置,但由于第二个参数指定从索引 9 处开始查找,这样在该字符串中无法找到‘org’,因此这行代码将会引发 ValueError 错误。

从上面程序可以看出,str 的 translate() 方法需要根据翻译映射表对字符串进行查找、替换。在上面程序中我们自己定义了一个翻译映射表,这种方式需要开发者能记住所有字符的编码,这显然不太可能。为此,Python 为由类提供了一个 maketrans() 方法,通过该方法可以非常方便地创建翻译映射表。

假如定义 a->α、b->β、t->τ 的映射,程序只要将需要映射的所有字符作为 maketrans() 方法的第一个参数,将所有映射的目标字符作为 maketrans() 方法的第二个参数即可。例如,直接在交互式解释器中执行如下代码:

>>> table = str.maketrans('abt','αβτ')
>>> table
{97: 945, 98: 946, 116: 964}
>>> table = str.maketrans('abc','123')
>>> table
{97: 49, 98: 50, 99: 51}
>>>

从上面的执行过程可以看到,不管是自己定义的翻译映射表,还是使用 maketrans() 方法创建的翻译映射表,其实都是为了定义字符与字符之间的对应关系,只不过该翻译映射表不能直接使用字符本身,必须使用字符的编码而已。

需要指出的是,如果使用 Python 2.x, str 类并没有 maketrans() 方法,而是由 string 模块提供 maketrans() 函数,因此程序需要先导入 string 模块,然后调用该模块的 maketrans() 函数。

下面在 Python 2.x 的交互式解释器中执行如下代码:

import string
table= string.maketrans('abc','123')

但 Python 2.x 中的翻译映射表不如 Python 3.x 的翻译映射表直观、明了,我们一般不用理会翻译映射表的内容,只要将翻译映射表作为 translate() 方法的参数即可。

Python字符串分割、连接方法

Python 还为 str 提供了分割和连接方法:

  • split():将字符串按指定分割符分割成多个短语。
  • join():将多个短语连接成字符串。

下面代码示范了上面两个方法的用法:

s = 'crazyit.org is a good site'
# 使用空白对字符串进行分割
print(s.split()) # 输出 ['crazyit.org', 'is', 'a', 'good', 'site']
# 使用空白对字符串进行分割,最多只分割前2个单词
print(s.split(None, 2)) # 输出 ['crazyit.org', 'is', 'a good site']
# 使用点进行分割
print(s.split('.')) # 输出 ['crazyit', 'org is a good site']
mylist = s.split()
# 使用'/'为分割符,将mylist连接成字符串
print('/'.join(mylist)) # 输出 crazyit.org/is/a/good/site
# 使用','为分割符,将mylist连接成字符串
print(','.join(mylist)) # 输出 crazyit.org,is,a,good,site

从上面的运行结果可以看出,str 的 split() 和 join() 方法互为逆操作。split() 方法用于将字符串分割成多个短语,而 join() 方法则用于将多个短语连接成字符串。

大家一起交流 Python交流:君羊 抖音

a6547d8b7aafb402260175e5824f77c4.png

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值