字符串处理 第3关:字符串查找与替换

任务描述

本关的任务是,给定一个字符串,要利用 Python 提供的字符串处理方法,从该字符串中,查找特定的词汇,并将其替换为另外一个更合适的词。例如,给定一个字符串Where there are a will, there are a way,我们发现这句话中存在语法错误,其中are应该为is,需要通过字符串替换将其转换为Where there is a will, there is a way

在大家日常工作使用 Word 编写文档的过程中,经常会遇到一个问题,发现前面写的文档中某个词用错了,需要换为另外一个词来表达。Word 提供了全文查找与替换的功能,可以帮助用户很方便的处理这一问题。那么,这一功能最基础和核心的就是字符替换,如果我们要自己基于 Python 来实现,该怎么做呢?

相关知识

本关的小目标:学习并掌握 Python 中常用的字符串方法,包括字符串查找、字符串切分、字符串替换等。

字符串查找

Python 提供了内置的字符串查找方法find(),利用该方法可以在一个较长的字符串中查找子字符串。如果该字符串中,有一个或者多个子字符串,则该方法返回第一个子串所在位置的最左端索引,若没有找到符合条件的子串,则返回-1find()方法的基本使用语法如下:

 
  1. source_string.find(sub_string)

其中:

  • source_string:源字符串;

  • sub_string:待查的目标子字符串;

  • find:字符串查找方法的语法关键字。

例如,在一个字符串中,查找两个单词的位置:

 
  1. # coding=utf-8
  2. # 创建一个字符串
  3. source_string = 'The past is gone and static'
  4. # 查看"past"在source_string字符串中的位置
  5. print(source_string.find('past'))
  6. # 查看"love"在source_string字符串中的位置
  7. print(source_string.find('love'))

输出结果:

 
  1. 4
  2. -1

字符串替换

Python 提供了replace()方法,用以替换给定字符串中的子串。其基本使用语法如下:

 
  1. source_string.replace(old_string, new_string)

其中:

  • source_string:待处理的源字符串;

  • old_string:被替换的旧字符串;

  • new_string:替换的新字符串;

  • replace:字符串替换方法的语法关键词。

例如,在如下字符串中,用small子串替换big子串:

 
  1. # coding = utf-8
  2. # 创建一个字符串circle
  3. source_string = 'The world is big'
  4. # 利用replace()方法用子串"small"代替子串"big"
  5. print(source_string.replace('big','small'))

输出结果:

 
  1. The world is small

字符串分割

Python 提供了split()方法实现字符串分割。该方法根据提供的分隔符,将一个字符串分割为字符列表,如果不提供分隔符,则程序会默认把空格(制表、换行等)作为分隔符。其基本使用语法如下:

 
  1. source_string.split(separator)

其中:

  • source_string:待处理的源字符串;

  • separator:分隔符;

  • split:字符串分割方法的关键词。

例如,用+/还有空格作为分隔符,分割字符串:

 
  1. # coding = utf-8
  2. # 待处理字符串source_string
  3. source_string = '1+2+3+4+5'
  4. # 利用split()方法,按照`+`和`/`对source_string字符串进行分割
  5. print(source_string.split('+'))
  6. print(source_string.split('/'))

输出结果:

 
  1. ['1', '2', '3', '4', '5']
  2. ['1+2+3+4+5']

编程要求

本关的编程任务是,补全src/Step3/method2.py文件中 Begin-End 区间的代码,实现如下功能:

  • step1 :查找输入字符串source_string中,是否存在day这个子字符串,并打印输出查找结果;

  • step2 :对输入字符串source_string执行字符替换操作,将其中所有的 day替换为time,并打印输出替换后的字符串;

  • step3 :对 step2 进行替换操作后的新字符串,按照空格进行分割,并打印输出分割后的字符列表。

测试说明

本关的测试文件是src/Step3/method2.py,测试过程如下:

  1. 学习者将src/Step3/method2.py中的代码按上述编程要求补充完毕,然后点击评测,平台将自动编译并运行method2.py,并以标准输入方式提供测评输入;

  2. 平台获取程序的输出,然后将其与预期输出对比。如果一致,则测试通过,否则测试失败。

以下是平台对src/Step3/method2.py的样例测试集:

测试输入:

 
  1. All day is no day when it is past.

预期输出:

 
  1. 4
  2. All time is no time when it is past.
  3. ['All', 'time', 'is', 'no', 'time', 'when', 'it', 'is', 'past.']

第一行输出结果即为"day"在source_string字符串中的位置;
第二行输出结果即为将其中所有的 day替换为time后的字符串;
第三行输出结果即为对 step2 进行替换操作后的新字符串,按照空格进行分割后的字符列表。


开始你的任务吧,祝你成功!

# coding = utf-8
source_string = input()

# 请在下面添加代码
########## Begin ##########

print(source_string.find('day'))
# 查看"day"在source_string字符串中的位置
string = source_string.replace('day','time')
# 利用replace()方法用子串"day"代替子串"time" 
print(string)
print(string.split(' ')) 
# 利用split()方法,按照` `string字符串进行分割 
########## End ##########

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值