105. replace( )函数

【目录】


【正文】

1.replace( )函数功能

replace[rɪˈpleɪs]:替换、更换。

replace的中文意思是替换,更换。

replace是Python字符串对象的一个方法,作用是将字符串中指定的子串替换为新的子串

【功能】将指定的字符串替换为新的字符串。

2.replace( )函数的应用

字符串替换操作在编程中非常常见,通常有以下几种情况:

    1. 修改字符串内容

当需要修改字符串中的某些内容,比如将一个单词替换为另一个单词,或者将一个字符替换为另一个字符。

    1. 数据清洗

在数据处理和文本处理中,经常需要对字符串进行清洗和规范化。例如,去除特殊字符、修正拼写错误、替换敏感词等操作都可以通过字符串替换来实现。

    1. 格式转换

有时候我们需要将字符串从一种格式转换为另一种格式。例如,将日期格式从"YYYY-MM-DD"转换为"MM/DD/YYYY",或者将数字格式从"1,000,000"转换为"1000000"等。字符串替换操作可以帮助我们实现这种格式转换。

    1. 动态生成字符串

在一些场景下,需要根据一些规则或者条件动态生成字符串。通过替换操作,我们可以将模板字符串中的占位符替换为具体的值,从而生成最终的字符串。

总之,字符串替换操作是一种非常常用的字符串处理方式,它可以帮助我们实现字符串内容的修改、数据清洗、格式转换和动态生成等功能。

3.replace( )函数的语法

【语法】

str.replace(old, new, count)

count[kaʊnt]:计数、点数。

replace( )函数由6部分组成:

  • 1.str:要进行替换操作的字符串;
  • 2.函数名:replace
  • 3.英文小括号:( )
  • 4.old:需要被替换的字符串;
  • 5.new:替换后的新字符串;
  • 6.count(可选):指定替换次数,默认为全部替换。

4. 代码示例

4.1 替换单个字符

【代码示例1】

# 要操作的字符串对象
s = "Hello"

# 语法:str.replace(old, new, count)
# 这里没有加入count参数,默认为全部替换
# old = H,要替换的字符
# new = h,替换后的字符
# 作用:将字符串种的H字母替换为h
new_s = s.replace("H", "h")
print(new_s)

【终端输出】

hello

4.2 替换多个字符

目标任务:将‘Hello, World!’中的字母o和字母l全部替换为*

注意str.replace(old, new, count)中的old数据类型只能是字符串。

【代码示例2】

# s是要操作的字符串对象
s = "Hello, World!"

# old要替换的子字符,这里要替换的是2个字符
# old数据类型为列表
# 列表里的元素为字符串
old = ['o', 'l']

# 替换后的新字符串
new = '*'

# 用for循环取值,依次替换字符
for i in old:
    # 语法:str.replace(old, new, count)
    # 第一次取值i='o',数据类型为字符串
    # new = *
    # 第1次替换将所有的字母o替换为字符*,替换后s=Hell*, W*rld!
    # 第2次要操作的对象为新的s,即s=Hell*, W*rld!
    # 第2次替换将所有的字母l替换为字符*,最终输出结果为He***, W*r*d!
    s = s.replace(i, new)
print(s)    

【终端输出】

He***, W*r*d!

目标任务:用自定义函数实现替换多个字符。

【代码示例3】

# def语句自定义一个函数
def get_char(s, old, new):
    for i in old :
        # 语法:str.replace(old, new, count)
        # 这里的i就是要替换的字符,数据类型为字符串
        # i = o时,将字符串中的所有o字母替换为*
        # i = l是,将字符串中的所有l字母替换为*
        s = s.replace(i, new)
    return s

# 要操作的字符串对象
s = "Hello, World!"   
# 要替换的字符
old= ['o', 'l']
# 替换后的新字符
new= '*'

# 调用函数语法:函数名(参数)
# get_char是函数名
# s old new是要传入的3个参数
# 依次传递给get_char函数中的s old new 
new_string = get_char(s, old, new)
print(new_string)  # 输出:Hell W*rld!

【终端输出】

He***, W*r*d!

【代码解析】

def get_char(s, old, new):

def语句自定义一个名为get_char的函数,它接收3个参数s、old和new。

for i in old :
    # 语法:str.replace(old, new, count)
    s = s.replace(i, new)

for循环遍历列表old中的每个字符。
使用replace()方法将字符串s中的所有i(for循环得到的字符)替换为new。

return s

循环结束后,返回最终替换完成的字符串s。

4.3 指定替换次数

【代码示例4】

# 原始字符串
string = "Hello, Hello, Hello, Hello!"

# 使用replace函数替换指定次数
# 语法:str.replace(old, new, count)
# old="Hello",要替换的字符串
# new="Hi",替换后的字符
# count=2表示只替换2次
# 第1次替换将第1个Hello替换为Hi
# 第2次替换将第2个Hello替换为Hi
# 替换2次,因此后2个Hello未做改变
new_string = string.replace("Hello", "Hi", 2)

# 输出结果
print(new_string)

【终端输出】

Hi, Hi, Hello, Hello!

5. 课后练习

【知识回顾】

54.python的def语句自定义函数

5.1 练习1

编写一个程序,要求用户输入一个字符串,然后将字符串中的所有空格替换为下划线,并输出替换后的结果。

# def语句自定义一个函数
def get_char():
    # 用input函数从终端输入一个要操作的字符串对象,并赋值给变量s
    # 我输入的字符串为:hello word!
    s = input("请输入一个包含空格的字符串:")

    # 使用replace函数进行替换
    # 语法:str.replace(old, new, count)
    # old = " "
    # new = "_"
    # 作用是将字符串中的空格替换为小横线
    new_s = s.replace(" ", "_")
    print("替换后的结果为:", new_s)

# 调用函数语法:函数名(参数)
get_char()

【终端输出】

替换后的结果为: hello_word!

5.2 练习2

编写一个程序,要求用户输入一个字符串和两个字符串,然后将字符串中的第一个字符串替换为第二个字符串,并输出替换后的结果。

【代码示例】

# def语句自定义一个函数
# 函数名replace_substring:替换子字符串
# 参数名:string, old_substring, new_substring
def replace_substring(string, old_substring, new_substring):
    # 使用replace函数进行替换
    # 语法:str.replace(old, new, count)
    # string要操作的字符串对象
    # old = old_substring,要被替换的`子`字符串
    # new = new_substring,替换后的新字符串
    replaced_string = string.replace(old_substring, new_substring)
    # 返回替换后的字符串
    return replaced_string

# 获取用户输入
# 我终端输入的是2023年1月1日
string = input("请输入一个字符串:")
# 我终端输入的是2023
old_substring = input("请输入要替换的子字符串:")
# 我终端输入的是2024
new_substring = input("请输入替换后的子字符串:")

# 调用函数语法:函数名(参数)
result = replace_substring(string, old_substring, new_substring)

# 输出结果
print("替换后的结果为:", result)

【终端输出】

替换后的结果为: 2024年1月1日

6. 课后练习

提供一个名为105.txt的文本,文本的内容如下:

Who's there?
FRANCISCO
Nay, answer me: stand, and unfold yourself.
BERNARDO
Long live the king!
FRANCISCO
Bernardo?
BERNARDO
He.

任务是用代码读取该文件,并将该文件中的所有标点符号替换为空格。

# file_path变量名,存储的是hamlet.txt文件的相对路径
file_path = "105.txt"

# 使用open函数打开文件
# 参数file_path传入的是文件路径
# 参数r是以只读模式打开文件
# 使用with语句可以确保文件在使用完后会被正确关闭
# 语法:open(file, mode='r', encoding='None', errors='None')
with open(file_path, "r") as f:
    # 使用read方法读取文件的内容
    text = f.read()

    # in后面存储的文本中可能出现的字符
    # 变量ch提取要替换的字符    
    for ch in "`!@#$%^&*():;''|/?><,.":      
        # 语法:str.replace(old, new, count)
        # ch第一次提取到的符号为`,将文本中的所有`替换为空格
        # 没有该字符则继续往下提取
        # old = ch
        # new = " "
        text = text.replace(ch," ")

# 打印转换后的文本
print(text)

【终端输出】

Who s there 
FRANCISCO
Nay  answer me  stand  and unfold yourself 
BERNARDO
Long live the king 
FRANCISCO
Bernardo 
BERNARDO
He 
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐