python删除特定字符串之后的_从python中的字符串中删除特定字符

在Python中,字符串是不可变的。删除特定字符通常涉及使用`str.replace()`或`re.sub()`。对于Python 2.x,可以使用`translate(None, '特定字符')`;而在Python 3中,需要创建一个字典来映射要删除的Unicode字符。另外,`string.maketrans()`可用于创建转换表,与早期Python版本兼容。" 138347750,11386646,Python爬虫与可视化:淘宝乐器销售数据分析与推荐系统,"['信息可视化', 'python', '爬虫', '数据分析', '推荐系统']
摘要由CSDN通过智能技术生成

Python中的字符串是不可变的(不能改变)。正因为如此,line.replace(…)的效果只是创建一个新的字符串,而不是改变旧的。您需要重新绑定(分配)到行,以使该变量取新值,并删除这些字符。

此外,你做的方式将是一种缓慢,相对。它也可能有点混乱的经验的Python,谁会看到一个双重嵌套的结构,并想一会儿,更复杂的事情正在发生。

从Python 2.6和更新的Python 2.x版本*开始,你可以使用str.translate,(但阅读Python 3的区别):

line = line.translate(None, '!@#$')

或用re.sub正则表达式替换

import re

line = re.sub('[!@#$]', '', line)

括号中的字符构成一个字符类。在该类中的行中的任何字符都将被第二个参数替换为sub:一个空字符串。

在Python 3中,字符串是Unicode。你必须稍有不同的翻译。 kevpie在一个comment的答案提到这一点,并在documentation for str.translate注意到。

当调用Unicode字符串的translate方法时,您不能传递我们上面使用的第二个参数。您也不能将None作为第一个参数,甚至不能通过string.maketrans传递一个转换表。相反,您传递一个字典作为唯一的参数。这个字典将字符的序数值(即,在它们上调用ord的结果)映射到应该替换它们的字符的序数值,或者有用地指示我们 – 无指示它们应该被删除。

所以要做一个Unicode字符串上面的舞蹈你会调用像

translation_table = dict.fromkeys(map(ord, '!@#$'), None)

unicode_line = unicode_line.translate(translation_table)

{ord('!'): None, ord('@'): None, ...}

unicode_line = unicode_line.translate({ord(c): None for c in '!@#$'})

*为了与早期的Pythons兼容,您可以创建一个“null”转换表,以代替None:

import string

line = line.translate(string.maketrans('', ''), '!@#$')

这里,string.maketrans用于创建一个翻译表,它只是一个字符串,包含序数值为0到255的字符。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值