Python 中的字符串替换 | Python 字符串替换 [2022]

已发表: 2021-01-02

在数据清理或文本处理方面,替换 Python 中的字符和字符串是一项至关重要的任务。 您的数据可能存在需要删除的垃圾字符的格式问题,类别可能存在拼写问题等。此外,在对基于 NLP 的问题进行文本预处理时,字符串替换是准备文本数据时最基本和最重要的步骤。

在本教程中,我们将介绍多种替换不同类型字符串的方法。 如果您有兴趣进入数据科学领域,请查看我们的数据科学认证。 在本教程结束时,您将掌握以下知识:

  • Python 替换()方法
  • 正则表达式 sub() 方法
  • 加入()和过滤器()
  • 替换字符串中的数字数据

目录

Python 替换()

replace(old_str, new_str, count)方法由 3 个参数组成:

  • old_str:需要替换的字符串或字符串的一部分
  • new_str:需要替换旧字符串的字符串
  • count:需要替换特定字符串的次数

让我们看几个例子来理解它的工作原理。

单次更换

Mystr = “这是一个示例字符串”
Newstr = Mystr.replace( 'is' , 'was' )

#输出:
这是一个示例字符串

如果你还记得,Python 中的字符串是不可变的。 因此,当我们调用 replace 方法时,它实质上是用修改后的数据创建了另一个字符串对象。 此外,我们没有在上面的例子中指定 count 参数。 如果未指定,replace 方法将替换所有出现的字符串。

多次更换

Mystr = “这是一个示例字符串”
Newsstr = Mystr.replace( “s” , “X” )

#输出:
ThiX iX 示例 Xstring

多次替换前 n 次出现

如果您只想要前 N 次出现,

Mystr = “这是一个示例字符串”
Newstr = Mystr.replace( “s” , “X” , 3 )

#输出:
ThiX iX 一个示例字符串

多个字符串替换

在上面的例子中,我们用不同的次数替换了一个字符串。 现在,如果您想替换同一个大字符串中的不同字符串怎么办。 我们可以为它编写一个有效的函数并使用相同的方法完成它。

考虑上面的例子,但现在我们想用“X”替换“h”、“is”和“ng”。

def MultipleStrings (mainStr, strReplaceList, newStr)
# 遍历要替换的字符串
对于strReplaceList中的元素
# 检查字符串是否在主字符串中
如果mainStr中的元素:
# 替换字符串
mainStr = mainStr.replace(elem, newStr)

返回mainStr

Mystr = “这是一个示例字符串”
Newstr = MultipleStrings(Mystr, [ 'h' , 'is' , 'ng' ] , "X" )

#输出:
TX X 样本 striX

阅读: Python 教程

用正则表达式替换

Python 的正则表达式是一个专门用于处理文本数据的模块——无论是查找子字符串、替换字符串还是其他任何事情。 正则表达式具有 sub() 函数可以轻松查找和替换/替换子字符串。 让我们回顾一下它的语法和一些用例。

regex.sub (pattern, replacement, original_string)函数接受 3 个参数:

  • pattern:需要匹配替换的子串。
  • 替换:可以是需要放置到位的字符串,也可以是返回需要放置到位的值的可调用函数。
  • original_string:必须替换子字符串的主字符串。

与替换方法相同,正则表达式还使用修改后的字符串创建另一个字符串对象。 让我们看几个工作示例。

删除空格

空格可以被视为特殊字符并替换为其他字符。 在下面的示例中,我们打算用“X”替换空格。

重新进口
Mystr = “这是一个示例字符串”
# 将 Mystr 中的所有空格替换为 'X'
Newstr = re.sub( r”\s+” , 'X' , Mystr)

#输出:
ThisXisXaXsampleXstring


正如我们所见,所有的空格都被替换了。 模式由 r”\s+” 给出,表示所有的空白字符。

删除所有特殊字符

要删除所有特殊字符,我们将传递一个与所有特殊字符匹配的模式。

重新进口
导入字符串
Mystr = “节奏@@&[(000)]%%$@@66isit$$#$%-+Str”
模式 = r'[' + string.punctuation + ']'
# 用 X 替换字符串中的所有特殊字符
Newstr = re.sub(pattern, 'X' , Mystr)

#输出:
速度XXXXXX000XXXXXXX66isitXXXXXXXStr

删除子字符串不区分大小写

在现实生活中的数据中,可能存在相同单词的多个版本具有不同大小写字符的情况。 要将它们全部删除,将所有单词分开作为模式将无效。 正则表达式 sub() 函数采用标志re.IGNORECASE 来忽略这些情况。 让我们看看它是如何工作的。

重新进口
Mystr = “这是一个示例字符串”
# 用不区分大小写的方法替换字符串中的子字符串
Newstr = re.sub( r'is' , '**' , Mystr, flags=re.IGNORECASE)

#输出:
Th** ** 样本 **tring

使用正则表达式删除多个字符

regex 函数可以轻松地从字符串中删除多个字符。 下面是一个例子。

重新进口
Mystr = “这是一个示例字符串”
模式 = r'[hsa]'
# 从字符串中删除字符 'h'、's' 和 'a'
Newstr = re.sub(pattern, , Mystr)

#输出:
标题串

使用 join() 替换

删除或替换字符的另一种方法是遍历字符串并根据某些条件检查它们。

charList = [ 'h' , 's' , 'a' ]
Mystr = “这是一个示例字符串”
# 从字符串中删除列表中的所有字符
Newstr = .join((elem for elem in Mystr if elem not in charList))

#输出:
标题串

使用 join() 和 filter() 替换

上面的例子也可以通过使用过滤器功能来完成。

Mystr = “这是一个示例字符串”
charList = [ 'h' , 's' , 'a' ]
# 从字符串中删除列表中的所有字符
Newstr = “” .join(filter( lambda k: k不在charList , Mystr))

#输出:
尝试

必读:现实世界中令人着迷的 Python 应用程序

替换数字

很多时候,数字数据也存在于字符串中,可能需要作为不同的特征单独删除和处理。 让我们看几个例子来看看这些是如何实现的。

使用正则表达式

考虑下面的字符串,我们需要从中删除数字数据。

Mystr = “20xx 年的示例 string9211”
模式 = r'[0-9]'
# 匹配字符串中的所有数字并用空字符串替换
Newsstr = re.sub(pattern, “” , Mystr)

#输出:
xx年的样本字符串

在上面的代码中,我们使用匹配模式r'[0-9]'来匹配所有数字。

使用 join() 函数

我们还可以迭代字符串并使用isdigit()方法过滤掉数字,该方法对字母返回False

Mystr = “20xx 年的示例 string9211”
# 遍历字符串中的字符并连接除数字以外的所有字符
Newstr = “” .join ((如果不是item.isdigit ( ) ))

#输出:
xx年的样本字符串

使用 join() 和 filter()

同样,我们也可以将过滤条件放在 filter 函数中,只返回返回True的字符

Mystr = “20xx 年的示例 string9211”

# 从字符串中的字符中过滤所有数字并加入剩余的字符
Newstr = “” .join(filter( lambda item: not item.isdigit(), Mystr))

#输出:
xx年的样本字符串

在你走之前

我们介绍了许多示例,展示了从字符串中删除或替换字符/空格/数字的不同方法。 我们强烈建议您尝试更多示例和不同的方法来完成上述示例以及更多您自己的示例。

如果您想了解 Python、数据科学,请查看 IIIT-B 和 upGrad 的数据科学执行 PG 计划,该计划是为在职专业人士创建的,并提供 10 多个案例研究和项目、实用的实践研讨会、与行业专家的指导,与行业导师一对一,400 多个小时的学习和顶级公司的工作协助。

Python中的字符串替换方法需要什么?

当您对其应用数据清理技术时,此功能变得非常有用。 使用此功能可以轻松删除不必要的或乱码。 替换字符串或字符不仅用于数据清洗,还用于处理 NLP 的问题。
拥有这些类型的方法来处理字符串很重要,因为整个数据科学领域都在处理大量数据。

使用字符串数据类型有什么好处?

字符串很有用,因为您可以使用这种数据类型轻松存储大量数据。 Python 支持大量有用的方法来对字符串执行操作。 此外,字符串在 Python 中是可变的,这减少了错误的产生,而且它们也更便宜。
字符串是 Python 中最常用的内置数据类型之一。 不仅在 python 中,许多其他语言也支持这个作为预定义的数据类型,并支持各种方法对其进行操作。