原文:
How to Remove a Specific Character from a String in Python
在 Python 中编码时,你有时可能需要从一个字符串中删除一个字符。
比如当你正在处理用户生成的输入,需要清理数据和删除不需要的字符的时候。
具体来说,你可能需要从一个字符串中只删除一个字符的实例,甚至是一个字符的所有实例。
Python 提供了许多方法来帮助你做到这一点。
在 Python 中从字符串中删除字符的两种最常见的方法是:
-
使用
replace()
字符串方法
-
使用
translate()
字符串方法
当使用这两种方法中的任何一种时,你可以指定你想从字符串中删除的字符。
这两种方法都是用你指定的值来替换一个字符。如果你指定了一个空字符,你想删除的字符就会被删除而不被替换。
在使用这些方法时需要注意的是,由于字符串是不可变的,所以原始字符串不会被改变。相反,这两个方法都会返回一个新的修改过的字符串,其中不包含你想删除的字符。
在这篇文章中,你将通过编码实例学习如何使用这两种方法从一个字符串中删除一个或多个字符。
下面是我们要介绍的内容:
-
如何使用
replace()
方法从一个字符串中删除一个特定的字符
-
如何使用
replace()
方法从一个字符串中删除多个字符
-
使用方法链删除多个字符
-
用
for
循环删除多个字符
-
用正则表达式删除多个字符
-
如何使用
translate()
方法从一个字符串中删除一个特定的字符
-
如何使用
translate()
方法从一个字符串中删除多个字符
我们开始学习吧!
如何在 Python 中使用 replace() 方法从一个字符串中删除一个特定的字符
replace()
方法的一般语法类似于以下内容:
string.replace( character, replacement, count)
让我们把它分解一下:
-
你在一个字符串
string
上使用了
replace()
方法。
-
replace()
方法接受三个参数:
-
character
是一个必需的参数,代表你要从
string
中删除的特定字符。
-
replacement
是一个必需的参数,代表将取代
character
的新字符串/字符。
-
count
是一个可选参数,代表你想从
string
中删除的
character
的最大数量。如果你不包括
count
,那么默认情况下,
replace()
方法将删除所有
character
的出现次数。
replace()
方法并不修改原始字符串。相反,它的返回值是原始字符串的副本,其中没有你想删除的字符。
现在,让我们看看
replace()
的实际应用吧!
假设你有下面这个字符串,你想删除所有的感叹号:
my_string = "Hi! I! Love! Python!"
以下是你如何删除所有出现的
!
字符:
my_string = "Hi! I! Love! Python!"
my_new_string = my_string.replace("!", "")
print(my_new_string)
# Hi I Love Python
在上面的例子中,我给
my_string
添加了
replace()
方法。
然后我将结果存储在一个名为
my_new_string
的新变量中。
记住,字符串是不可改变的。原有的字符串保持不变——
replace()
返回一个新的字符串,不会修改原有的字符串。
我指定要删除
!
字符,并指出我想用一个空字符来替换
!
我也没有使用
count
参数,所以
replace()
用一个空的字符替换了所有出现过的
!
存储在变量
my_string
中的原始字符串有四次出现
!
字符。
如果我想只删除三个字符的实例,而不是全部,我会使用
count
参数,并传递一个值
3
来指定我想替换该字符的次数:
my_string = "Hi! I! love! Python!"
my_new_string = my_string.replace("!", "", 3)
print(my_new_string)
# Hi I love Python!
如何在 Python 中使用 replace() 方法从一个字符串中移除多个字符
可能有一天,你需要从一个字符串中替换多个字符。
在下面的章节中,你将看到使用
replace()
方法实现这一目的的三种方法。
使用方法链删除多个字符
一种方法是通过链式
replace()
方法来实现:
my_string = "Hi!? I!? love!? Python!?"
my_new_string = my_string.replace("!","").replace("?","")
print(my_new_string)
# Hi I love Python
这种删除字符的方式可能相当难读。
使用 for 循环删除多个字符
另一种方法是在
for
循环中使用
replace()
方法来完成这个任务:
my_string = "Hi!? I!? love!? Python!?"
replacements = [('!', ''), ('?', '')]
for char, replacement in replacements:
if char in my_string:
my_string = my_string.replace(char, replacement)
print(my_string)
# Hi I love Python
我首先创建了一个包含我想删除的两个字符(
!
和
?
)的字符串,并将其存储在变量
my_string
中。
我把我要替换的字符和它们的替代品一起存储在一个元组的列表中,元组的名称为
replacements
——我想用一个空字符串替换
!
,用一个空字符串替换
?
。
然后,我使用
for
循环来迭代这个元组列表(如果你需要复习
for
循环,请阅读
这篇文章
)。
在
for
循环中,我使用
in
操作符来检查这些字符是否在字符串中。如果是,我就用
replace()
方法来替换它们。
最后,我重新赋值了这个变量。
使用正则表达式删除多个字符
还有一种方法是通过使用正则表达式库
re
和
sub
方法来实现的。
你首先需要导入这个库:
import re
然后,指定你要删除的字符组(在本例中,是
!
和
?
字符),以及你要替换的字符。在本例中,替换成一个空字符:
import re
my_string = "Hi!? I!? love!? Python!?"
my_new_string = re.sub('[!?]',"",my_string)
print(my_new_string)
# Hi I love Python
如何在 Python 中使用 translate() 方法从一个字符串中删除一个特定的字符
与
replace()
方法类似,
translate()
可以从一个字符串中删除字符。
translate()
方法有点复杂,对初学者不是很友好。
当你需要从一个字符串中删除字符时,
replace()
方法是最直接的解决方案。
当使用
translate()
方法替换字符串中的一个字符时,你需要创建一个字符翻译表,
translate()
使用该表的内容来替换字符。
翻译表是一个键-值映射的字典,每个键被替换成一个值。
你可以使用
ord()
函数来获取字符的 Unicode 值,然后将该值映射到另一个字符。
这个方法返回一个新的字符串,其中旧字符串中的每个字符被映射到翻译表中的一个字符。
返回值是一个新的字符串。
让我们看一个例子,使用前面几节的相同代码:
my_string = "Hi! I! love! Python!"
my_new_string = my_string.translate( { ord("!"): None } )
print(my_new_string)
# Hi I love Python
在上面的例子中,我使用
ord()
函数来返回与我想替换的字符相关的 Unicode 值,在这个例子中是
!
。
然后,我将该 Unicode 值映射到
None
——表示无或空——这确保了将其删除。具体来说,它用
None
值替换了每一个
!
字符的实例。
如何在 Python 中使用 translate() 方法从一个字符串中删除多个字符
如果你需要使用
translate()
方法替换一个以上的字符呢?为此,你可以使用一个迭代器,像这样:
my_string = "Hi!? I!? love!? Python!?"
my_new_string = my_string.translate( { ord(i): None for i in '!?'} )
print(my_new_string)
# Hi I love Python
在上面的例子中,我通过使用一个迭代器,遍历我想删除的字符,用
None
的值替换了
!
和
?
。
translate()
方法检查
my_string
中的每个字符是否等同于感叹号或问号。如果是,那么它就被替换成
None
。
总结
希望这篇文章能够帮助你了解如何使用 Python 内置的
replace()
和
translate()
字符串方法删除字符。
感谢你阅读本文,happy coding!
freeCodeCamp 是捐助者支持的 501(c)(3) 条款下具有免税资格的慈善组织(税号:82-0779546)。
我们的使命:帮助人们免费学习编程。我们通过创建成千上万的视频、文章和交互式编程课程——所有内容向公众免费开放——来实现这一目标。
所有给 freeCodeCamp 的捐款都将用于我们的教育项目,购买服务器和其他服务,以及聘用员工。
你可以
点击此处免税捐款
。
about:blank 是什么意思
打开 .dat 文件
Node 最新版本
反恶意软件服务
Windows10 产品密钥
Git 切换分支
AppData 文件夹
Windows 10 屏幕亮度
JSON 注释
MongoDB Atlas 教程
Python 字符串转数字
Git 命令
更新 NPM 依赖
谷歌恐龙游戏
CSS 使用 SVG 图片
Python 获取时间
Git Clone 指定分支
JS 字符串反转
React 个人作品网站
媒体查询范围
forEach 遍历数组
撤销 Git Add
OSI 七层网络
Event Loop 执行顺序
CMD 删除文件
Git 删除分支
HTML 表格代码
Nano 怎么保存退出
HTML5 模板