根据this post的要求和回答,我需要将'['与'[[]'和']'替换为'[]]'。
我尝试使用s.replace(),但由于它没有到位,我按以下方式运行以获得错误的anwser。
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
答案 0 :(得分:12)
import re
path2 = re.sub(r'(\[|])', r'[\1]', path)
说明:
\[|]
将匹配括号(开启或关闭)。将其放在括号中将使其成为一个组。然后在替换字符串中,\1
将替换为该组的内容。
答案 1 :(得分:3)
我会使用像
这样的代码path = "/Users/smcho/Desktop/bracket/[10,20]"
replacements = {"[": "[[]", "]": "[]]"}
new_path = "".join(replacements.get(c, c) for c in path)
答案 2 :(得分:1)
还有这个通用的python多次替换配方:Single pass multiple replace
答案 3 :(得分:0)
import re
path2 = re.sub(r'(\[|\])', r'[\1]', path1)
答案 4 :(得分:0)
或者,为了避免正则表达式,我会用一个独特的字符串替换开始括号,然后替换结束括号,然后替换唯一的字符串 - 也许是一个圆的方式,但在我看来它看起来更简单 - 只有一个测试会说它是否更快。此外,我倾向于重复使用相同的名称。
即
path1 = "/Users/smcho/Desktop/bracket/[10,20]"
path1 = path1.replace('[','*UNIQUE*')
path1 = path1.replace(']','[]]')
path1 = path1.replace('*UNIQUE*','[[]')
pathName = os.path.join(path1, "*.txt")