如何在Python中进行多重替换?

5 投票
6 回答
7678 浏览
提问于 2025-04-15 21:30

这个帖子中提到并回答了我的问题,我需要把'['替换成'[[]',把']'替换成'[]]'。

我试着用s.replace()来做,但因为这个方法不会直接在原来的字符串上修改,所以我运行的代码得到了错误的结果。

path1 = "/Users/smcho/Desktop/bracket/[10,20]"
path2 = path1.replace('[','[[]')
path3 = path2.replace(']','[]]')
pathName = os.path.join(path3, "*.txt")
print pathName
-->
/Users/smcho/Desktop/bracket/[[[]]10,20[]]/*.txt
  • 我该如何在Python中进行多重替换呢?
  • 或者我该如何同时替换'['和']'呢?

6 个回答

1

这里还有一个通用的 Python 多重替换的方法:单次多重替换

3

我会使用这样的代码:

path = "/Users/smcho/Desktop/bracket/[10,20]"
replacements = {"[": "[[]", "]": "[]]"}
new_path = "".join(replacements.get(c, c) for c in path)
12
import re
path2 = re.sub(r'(\[|])', r'[\1]', path)

解释:

\[|] 这个表达式会匹配一个括号(无论是开括号还是闭括号)。把它放在括号里,就会把它捕捉到一个组里面。然后在替换的字符串中,\1 就会被这个组里的内容替换掉。

撰写回答