python中删除字符串中的()以及其中的元素_从Python中的字符串中删除特定字符

1e8ea769b081f9fd40b88adbbadbf715.png

繁星淼淼

Python中的字符串是不变(不能改变)。正因为如此,line.replace(...)只是创建一个新字符串,而不是更改旧字符串。你需要重新绑定(分配)给line为了让这个变量接受新的值,删除了这些字符。而且,你所做的事情会比较缓慢,相对来说。对于经验丰富的蟒蛇来说,这也可能有点令人困惑,他们会看到一种双重嵌套的结构,并会想一想更复杂的事情正在发生。从Python2.6和更新的Python2.x版本*开始,您可以使用str.translate,(但是阅读Python 3的不同之处):line = line.translate(None, '!@#$')或正则表达式替换为re.subimport re

line = re.sub('[!@#$]', '', line)括号内的字符构成字符类..任何字符line类中的第二个参数替换为sub一根空的绳子。在Python 3中,字符串是Unicode。你得换个翻译方式。凯夫皮在一个评语在其中一个答案上,在文件str.translate.调用translate方法,您不能传递上面使用的第二个参数。你也不能通过None作为第一个参数,甚至是string.maketrans..相反,您传递一个字典作为唯一的参数。本词典将序数值(即调用的结果)ord)应该替换它们的字符的序号值,或者None表示它们应该被删除。因此,要用Unicode字符串跳上面的舞,您可以调用如下translation_table = dict.fromkeys(map(ord, '!@#$'), None)unicode_line = unicode_line.translate(translation_table)这里dict.fromkeys和map用于简洁地生成包含以下内容的字典:{ord('!'): None, ord('@'): None, ...}更简单,如另一个答案是,创建适当的字典:unicode_line = unicode_line.translate({ord(c): None for c in '!@#$'})*为了与早期的Pythons兼容,您可以创建一个“空”转换表,以代替None:import string

line = line.translate(string.maketrans('', ''), '!@#$')这里string.maketrans用于创建翻译表,它只是一个字符串,包含序数值为0到255的字符。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值