Python基础之字符串常见操作经典实例详解

1. 字符串的定义和基本操作

字符串是 Python 中最常用的数据类型之一,它用一对单引号(' ')或双引号(" ")表示。定义字符串的方法很简单,直接把一组字符用引号括起来即可,例如:

s1 = 'Hello, World!'

s2 = "Python is a powerful language."

1.1 字符串的拼接

字符串之间可以使用加号(+)进行拼接,拼接后得到的新的字符串就是原来两个字符串的拼接。例如:

s1 = 'Hello, '

s2 = 'world!'

s3 = s1 + s2

print(s3) # 输出:Hello, world!

1.2 字符串的重复

字符串可以使用乘号(*)进行重复,重复后得到的新的字符串就是原字符串重复多次的结果。例如:

s = 'Python '

s = s * 3

print(s) # 输出:Python Python Python

1.3 字符串的切片

字符串可以被当做一个字符序列进行访问,字符串中的每一个字符都有一个索引,索引从0开始。通过使用索引可以访问字符串中的某一个字符,也可以通过切片操作访问字符串中的一段子串。其中,切片的语法格式为:[起始索引:终止索引:步长]。例如:

s = 'Hello, World!'

print(s[0]) # 输出:H

print(s[7:12]) # 输出:World

print(s[:-1:2]) # 输出:Hlo ol!

print(s[::-1]) # 输出:!dlroW ,olleH

2. 字符串的常用方法

2.1 字符串的长度

获取字符串的长度可以使用 len() 方法。例如:

s = 'Python is a powerful language.'

print(len(s)) # 输出:30

2.2 字符串的查找

字符串中查找某个子串可以使用 find()、index() 和 count() 方法。其中,find() 方法用于查找指定字符串是否存在于另一个字符串中,如果存在则返回该子串在原字符串中的索引位置;如果不存在,则返回 -1。

s = 'Python is a powerful language.'

print(s.find('powerful')) # 输出:10

print(s.find('weak')) # 输出:-1

index() 方法与 find() 方法类似,但是当指定的子串不存在于原字符串中时,会引发 ValueError 异常。例如:

try:

print(s.index('weak'))

except ValueError:

print('子串不存在')

count() 方法用于统计一个字符串在另一个字符串中出现的次数。例如:

s = 'To be or not to be, that is the question.'

print(s.count('be')) # 输出:2

2.3 字符串的替换

字符串中某个子串的替换可以使用 replace() 方法。例如:

s = 'Python is a powerful language.'

print(s.replace('Python', 'Java')) # 输出:Java is a powerful language.

2.4 字符串的分割和连接

字符串的分割可以使用 split() 方法,该方法会返回一个列表,列表中的每个元素都是分割后的子串。例如:

s = 'apple, orange, banana, peach'

print(s.split(', ')) # 输出:['apple', 'orange', 'banana', 'peach']

字符串的连接可以使用 join() 方法,该方法需要一个可迭代对象(例如列表、元组等),它会将可迭代对象中的所有元素按照指定的分割符进行连接。例如:

lst = ['apple', 'orange', 'banana', 'peach']

print(', '.join(lst)) # 输出:apple, orange, banana, peach

3. 经典实例:字符串统计与处理

3.1 统计字符串中的单词数

给定一个字符串,要求统计该字符串中单词的个数。单词指的是由大小写字母组成的连续字符序列,单词之间用非字母字符分隔。例如,字符串 'Hello, world! How are you?' 中有5个单词。

解决该问题的思路如下:

1. 首先将整个字符串中的标点符号都替换成空格;

2. 然后使用 split() 方法将字符串按空格进行分割;

3. 最后统计分割后的列表中元素的个数。代码如下:

s = 'Hello, world! How are you?'

s = s.replace(',', ' ').replace('.', ' ').replace('!', ' ').replace('?', ' ')

words = s.split()

print(len(words)) # 输出:5

3.2 反转字符串中的单词顺序

给定一个字符串,要求将字符串中的单词反转顺序后输出。例如,字符串 'Hello, world!' 中单词的顺序应该被反转为 'world! Hello,'。注意,单词中可能包含标点符号。解决该问题的思路如下:

1. 首先将字符串按空格进行分割得到一个单词列表;

2. 然后将单词列表反转;

3. 最后将反转后的单词列表按照空格重新连接成一个字符串。代码如下:

s = 'Hello, world!'

words = s.split()

words.reverse()

s = ' '.join(words)

print(s) # 输出:'world! Hello,'

3.3 替换字符串中的单词

给定一个字符串和两个单词,要求将字符串中所有的第一个单词替换成第二个单词,并输出替换后的字符串。例如,字符串 'Hi, Tom! How are you Tom?',将其中的Tom替换成Jerry后,输出 'Hi, Jerry! How are you Jerry?'。

解决该问题的思路如下:

1. 首先将字符串按空格进行分割得到一个单词列表;

2. 然后遍历该列表,将其中等于第一个单词的单词替换成第二个单词;

3. 最后将替换后的单词列表按照空格重新连接成一个字符串。代码如下:

s = 'Hi, Tom! How are you Tom?'

old_word = 'Tom'

new_word = 'Jerry'

words = s.split()

for i in range(len(words)):

if words[i] == old_word:

words[i] = new_word

s = ' '.join(words)

print(s) # 输出:'Hi, Jerry! How are you Jerry?'

后端开发标签