迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > Python >

如何在 Python 中替换字符串中的多个字符

作者:迹忆客 最近更新:2023/12/17 浏览次数:

本教程向你展示了如何在 Python 中替换一个字符串中的多个字符。

假设我们想删除字符串中的特殊字符,并用空格代替。

  • 要删除的特殊字符列表是!#$%^&*()
  • 另外,我们还想用 whitespace 替换逗号 ,
  • 我们将操作的示例文本。
A!!!,Quick,brown#$,fox,ju%m%^ped,ov&er&),th(e*,lazy,d#!og$$$

使用 str.replace() 替换 Python 中的多个字符

我们可以使用 strreplace() 方法将子字符串替换成不同的输出。

replace() 接受两个参数,第一个参数是你要匹配字符串的 regex 模式,第二个参数是匹配字符串的替换字符串。

它在 replace() 中还有第三个可选参数,它接受一个整数,用来设置要执行的最大 count 替换次数。如果你把 2 作为 count 参数,replace() 函数将只匹配和替换字符串中的 2 个实例。

str.replace('Hello', 'Hi') 将用 Hi 替换字符串中所有 Hello 的实例。如果你有一个字符串 Hello World,并对其运行 replace 函数,执行后会变成 Hi World

让我们对上面声明的示例文本使用 replace。首先将特殊字符去掉,通过循环每个字符并替换成一个空字符串,然后将逗号转换为空格。

txt = "A!!!,Quick,brown#$,fox,ju%m%^ped,ov&er&),th(e*,lazy,d#!og$$$"


def processString(txt):
    specialChars = "!#$%^&*()"
    for specialChar in specialChars:
        txt = txt.replace(specialChar, "")
    print(txt)  # A,Quick,brown,fox,jumped,over,the,lazy,dog
    txt = txt.replace(",", " ")
    print(txt)  # A Quick brown fox jumped over the lazy dog

这意味着在 spChars 方括号内的任何字符都将被一个空字符串替换,使用 txt.replace(spChars, '')

第一个 replace() 函数的字符串结果将是:

A, Quick, brown, fox, jumped, over, the, lazy, dog

下一个 replace() 调用将把所有逗号 , 的实例替换成单个空格。

A Quick brown fox jumped over the lazy dog

使用 re.sub()re.subn() 来替换 Python 中的多个字符

在 Python 中,你可以导入 re 的模块,它有大量的 regex 的表达式匹配操作供你利用。

re 中的两个这样的函数是 sub()subn()

我们再为这些方法声明一个字符串的例子。假设我们想把一个字符串内的所有数字替换成 X。

txt = "Hi, my phone number is 089992654231. I am 34 years old. I live in 221B Baker Street. I have 1,000,000 in my bank account."

在 Python 中使用 re.sub() 替换多个字符

该函数有 3 个主要参数。第一个参数接受一个 regex 模式,第二个参数是一个字符串,用来替换匹配的模式,第三个参数是要操作的字符串。

创建一个函数,将一个字符串中的所有数字转换为 X。

import re

txt = "Hi, my phone number is 089992654231. I am 34 years old. I live in 221B Baker Street. I have 1,000,000 in my bank account."


def processString3(txt):
    txt = re.sub("[0-9]", "X", txt)
    print(txt)


processString3(txt)

输出:

Hi, my phone number is XXXXXXXXXXXX. I am XX years old. I live in XXXB Baker Street. I have X,XXX,XXX in my bank account.

re.subn() 替换 Python 中的多个字符

这个函数本质上与 re.sub() 相同,但是返回一个转换后的字符串的元组和替换的数量。

import re

txt = "Hi, my phone number is 089992654231. I am 34 years old. I live in 221B Baker Street. I have 1,000,000 in my bank account."


def processString4(txt):
    txt, n = re.subn("[0-9]", "X", txt)
    print(txt)


processString4(txt)

输出:

Hi, my phone number is XXXXXXXXXXXX. I am XX years old. I live in XXXB Baker Street. I have X,XXX,XXX in my bank account.'
txt, n = re.subn("[0-9]", "X", txt)

在上面的代码片段中,处理后的字符串被分配给 txt,替换计数器被分配给 n

如果你想记下有多少个模式组作为指标或用于进一步处理,则 re.subn() 很有用。


在 Python 中使用 translate()maketrans() 替换多个字符

translate()maketrans() 使用一种不同于 regex 的方法,它利用字典将旧值映射到新值。

maketrans() 接受 3 个参数或一个字典的映射。

  • str1 - 要替换的字符串。
  • str2 - 以上字符的替换字符串。
  • str3 - 要删除的字符串。

maketrans() 一个原始字符串和它的替换之间的映射表。

translate() 接受任何 maketrans() 返回,然后生成翻译后的字符串。

比方说,我们想把一个字符串中的所有小写元音转换成大写和删除字符串中的所有 x、y 和 z。

txt = "Hi, my name is Mary. I like zebras and xylophones."


def processString5(txt):
    transTable = txt.maketrans("aeiou", "AEIOU", "xyz")
    txt = txt.translate(transTable)
    print(txt)


processString5(txt)

输出:

HI, m nAmE Is MAr. I lIkE EbrAs And lOphOnEs.

translate() 将所有小写元音转换为大写,并删除所有 x, y, 和 z 的实例。

使用这些方法的另一种方法是使用一个单一的映射字典而不是三个参数。

def processString6(txt):
    dictionary = {
        "a": "A",
        "e": "E",
        "i": "I",
        "o": "O",
        "u": "U",
        "x": None,
        "y": None,
        "z": None,
    }
    transTable = txt.maketrans(dictionary)
    txt = txt.translate(transTable)
    print(txt)

这仍然会产生与 processString5 相同的输出,但是是用字典实现的。你可以使用任何对你更方便的方法。

总之,有多种方法可以通过使用 Python 中的内置函数或从导入库中的函数来替换字符串中的多个字符。

最常用的方法是使用 replace()re.sub()subn() 也相当容易使用和学习。translate() 使用不同的方法,因为它不依靠正则表达式来执行字符串操作,而是依靠字典和 Map。

如果你愿意,你甚至可以使用 for 循环在字符串上手动循环,并添加你自己的条件来替换,只需使用 substring()split(),但这将是非常低效和多余的。Python 提供了现有的函数来为你完成这项工作,这比你自己完成繁琐的工作要容易得多。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

Pandas read_csv()函数

发布时间:2024/04/24 浏览次数:254 分类:Python

Pandas read_csv()函数将指定的逗号分隔值(csv)文件读取到 DataFrame 中。

Pandas 追加数据到 CSV 中

发布时间:2024/04/24 浏览次数:352 分类:Python

本教程演示了如何在追加模式下使用 to_csv()向现有的 CSV 文件添加数据。

Pandas 多列合并

发布时间:2024/04/24 浏览次数:628 分类:Python

本教程介绍了如何在 Pandas 中使用 DataFrame.merge()方法合并两个 DataFrames。

Pandas loc vs iloc

发布时间:2024/04/24 浏览次数:837 分类:Python

本教程介绍了如何使用 Python 中的 loc 和 iloc 从 Pandas DataFrame 中过滤数据。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便