code学习

青少年Python编程系列10:Python字符串的进阶操作(二)

作者:凤城老人

上节课我们已经讲了字符串的索引、切片和成员运算符,以上内容需要自己多练习才能熟练掌握。这节课我们继续讲字符串的方法和函数,看看它们能给字符串带来哪些“魔法”。这节课的内容使用起来并不算太难,关键在于背各种方法和函数的单词。

一、len()函数

使用len()函数可以获取字符串的长度,即字符串中有多少个字符。使用方式非常简单:

len(str)           

我们可以通过几个字符串试一下它的使用:

print(len('hello')) # 5  字符串中有5个字符,长度为5
print(len('')) # 0  空字符串中没有字符,长度为0
print(len('hello\n')) # 6 换行也算一个字符,长度为6           

二、count()方法

使用count()方法可以获取字符串中的子字符串的数量。

str.count(sub_str, beg=0, end=len(str))           

count()方法里面至少要有一个参数,是子字符串。后面两个参数是可选项,分别是起始位置和结束位置(暂时不要求掌握)。我们看一下具体的使用。

s = "This is a sausage"
print(s.count('s'))
# 结果为4,字符串中有4个字母‘s’           

三、find()方法和index()方法

使用find()方法可以获取字符串中子字符串首次出现位置的索引值,如果子字符串不存在则返回-1。使用index()方法同样可以获取字符串中子字符串首次出现位置的索引值,如果子字符串不存在程序报错。

str.find(sub_str, beg=0, end=len(str))
str.index(sub_str, beg=0, end=len(str))           

find()方法和index()方法里面至少有一个参数,是子字符串。后面两个参数是可选项,分别是起始位置和结束位置。我们看一下具体的使用。

s = "This is a sausage"
print(s.find('s'))
print(s.index('s'))
# find()和index()结果都为3,第四个字符是s,索引号为3
print(s.find('s', 4))
print(s.index('s', 4))
# 结果为6。从索引为4的字符串开始往后找,第一个s出现在is上,索引号为6
print(s.find('z', 4))
# 结果为-1。字符串中没有字母z,返回-1。
print(s.index('z', 4))
# 程序报错           

四、upper()方法和lower()方法

upper()方法可以将字符串全部转换为大写字母,lower()方法可以将字符串全部转换为小写字母。

str.upper()
str.lower()           

这两个方法里面都没有参数,使用非常简单。我们看一下具体的使用。

s = "This is a sausage"
print(s.upper())
# 结果为:THIS IS A SAUSAGE
print(s.lower())
# 结果为:this is a sausage           

五、replace()方法

replace()方法可以将字符串中的子字符串替换为新的子字符串。

str.replace(old, new [, max])           

replace()方法中至少有两个参数,分别是旧字符串和新字符串。第三个参数为可选项,可设置最多替换的个数,如不填写则替换全部。我们看一下具体的使用。

s = "This is a sausage"
print(s.replace('sausage', 'pizza'))
# 结果为:This is a pizza。sausage被替换成pizza。

s2 = "SOS SOS SOS SOS SOS"
print(s2.replace('SOS', 'HELP', 2))
# 结果为:HELP HELP SOS SOS SOS。最后一个参数2,规定了最多替换2个。           

六、strip()方法

strip()方法用于移除字符串头尾两端的指定字符或字符串,默认为空格和换行符。

注意:只删除头尾两端的,不会删除中间的。

str.strip([chars])           

replace()方法可以不填写参数,默认为空格和换行符。可选参数为指定字符或字符串。我们看一下具体的使用。

s1 = "   Python world   \n"
print(s1.strip())
#结果为:Python world,首尾两端的空格和换行都被删除。

s2 = "*****欢迎光临*****"
print(s1.strip('*'))
#结果为:欢迎光临,指定了删除首尾两端的*。
           

七、课后思考题

编程题

有如下一段英文:

There are many kangaroos in Australia and not only in zoos. You can see them everywhere outside the cities and towns. Kangaroos have very strong legs, so they are very good at jumping. Their tails are very strong, too. So when they want to have a rest, they rest on their tails. Kangaroos are also very good at looking their babies. Mother Kangaroos keep their babies safe in their pockets.

1、统计这篇文章的字数并输出

2、将全文改成大写字母并输出

3、统计文章中单词“are”的个数并输出

4、找出单词“Australia”出现位置的索引并输出

5、统计文章中单词的数量并输出(这一小题有点难度,仔细想想怎么做)

八、上节课思考题答案

1、 A

2、 C

3、 参考代码:

poem = "春眠不觉晓,处处闻啼鸟。夜来风雨声,花落知多少。 "
print(poem[:6])
print(poem[6:12])
print(poem[12:18])
print(poem[18:])           

思路:每句话包含标点符号一共6个字符,每6个字符做一个切片就可以完成了。