python - 在字符串中,python 替换多个字符

  显示原文与译文双语对照的内容
70 1

在 python 中是否有一个简单的方法来替换多个字符?

例如我想更改:


name1_22:3-3(+):Pos_bos 




name1_22_3-3_+__Pos_bos



所以基本上用 "_" 替换所有的"(",")",":"

我只知道这样做:


str.replace(":","_")


str.replace(")","_")


str.replace("(","_")



时间: 原作者:

123 1

另一种可能的用法是使用所谓的列表理解,结合所谓的三元条件运算符如下所示:


text = 'name1_22:3-3(+):Pos_bos '


out = ''.join(['_' if i in ':)(' else i for i in text])


print(out) #name1_22_3-3_+__Pos_bos



由于它提供了 list,我使用 ''.join 将( 。str 长度 1 )的list 更改为 str

56 0

你可以使用 re.sub 用一个 Pattern 替换多个字符:


import re


s = 'name1_22:3-3(+):Pos_bos '


re.sub(r'[():]', '_', s)



输出


'name1_22_3-3_+__Pos_bos '



原作者:
86 4

使用转换表在 python 2中,在 string 模块中定义 maketrans


>>> import string


>>> table = string.maketrans("():","___")



在 python 3中,它是一个 str 类方法。


>>> table = str.maketrans("():","___")



在这两者中,表作为参数传递给 str.translate


>>> 'name1_22:3-3(+):Pos_bos'.translate(table)


'name1_22_3-3_+__Pos_bos'



在 python 3中,还可以通过单个 dict 映射输入字符将输出字符输出到 maketrans:


table = str.maketrans({"(":"_",")":"_",":":"_"})



原作者:
...