首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >替换字符串中的多个字符

替换字符串中的多个字符
EN

Stack Overflow用户
提问于 2019-03-21 12:36:55
回答 3查看 618关注 0票数 3

在python中是否有一种简单的方法将多个字符替换为另一个字符?

例如,我想改变:

代码语言:javascript
复制
name1_22:3-3(+):Pos_bos 

代码语言:javascript
复制
name1_22_3-3_+__Pos_bos

因此,基本上将所有的"(",")",":"替换为"_"

我只知道用:

代码语言:javascript
复制
str.replace(":","_")
str.replace(")","_")
str.replace("(","_")
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-03-21 13:14:30

另一种可能是使用所谓的列表理解与所谓的三值条件运算符相结合的方式如下:

代码语言:javascript
复制
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将字符的list (长度为1的strs)转换为str

票数 2
EN

Stack Overflow用户

发布于 2019-03-21 12:48:29

使用翻译表。在Python2中,maketrans是在string模块中定义的。

代码语言:javascript
复制
>>> import string
>>> table = string.maketrans("():", "___")

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

代码语言:javascript
复制
>>> table = str.maketrans("():", "___")

在这两种情况下,表都作为参数传递给str.translate

代码语言:javascript
复制
>>> 'name1_22:3-3(+):Pos_bos'.translate(table)
'name1_22_3-3_+__Pos_bos'

在Python3中,还可以将单个dict映射输入字符传递到输出字符到maketrans

代码语言:javascript
复制
table = str.maketrans({"(": "_", ")": "_", ":": "_"})
票数 6
EN

Stack Overflow用户

发布于 2019-03-21 12:49:37

坚持当前使用replace()的方法

代码语言:javascript
复制
s =  "name1_22:3-3(+):Pos_bos"
for e in ((":", "_"), ("(", "_"), (")", "__")):
    s = s.replace(*e)
print(s)

输出

代码语言:javascript
复制
name1_22_3-3_+___Pos_bos

编辑:(用于可读性)

代码语言:javascript
复制
s =  "name1_22:3-3(+):Pos_bos"
replaceList =  [(":", "_"), ("(", "_"), (")", "__")]

for elem in replaceList:
    print(*elem)          # : _, ( _, ) __  (for each iteration)
    s = s.replace(*elem)
print(s)

代码语言:javascript
复制
repList = [':','(',')']   # list of all the chars to replace
rChar = '_'               # the char to replace with
for elem in repList:
    s = s.replace(elem, rChar)
print(s)
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55280595

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档