Как спросили и отвечено в этом сообщении, я должен заменить' ['' [[]', и']' с' []]'.
Я пытался использовать 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
import re
path2 = re.sub(r'(\[|])', r'[\1]', path)
Объяснение:
\ [|]
соответствует скобке (открывающей или закрывающей). Если поместить его в круглые скобки, он будет записан в группу. Затем в строке замены \ 1
будет заменено содержимым группы.
Или, чтобы избежать регулярного выражения, я бы заменил открывающую скобку уникальной строкой, затем заменил закрывающую скобку, а затем заменил уникальную строку - может быть, раунд о способе, но, на мой взгляд, он выглядит проще - только тест скажет, быстрее ли он. Кроме того, я бы предпочел повторно использовать одно и то же имя.
т.е.
path1 = "/Users/smcho/Desktop/bracket/[10,20]"
path1 = path1.replace('[','*UNIQUE*')
path1 = path1.replace(']','[]]')
path1 = path1.replace('*UNIQUE*','[[]')
pathName = os.path.join(path1, "*.txt")
import re
path2 = re.sub(r'(\[|\])', r'[\1]', path1)
Я бы использовал код типа
path = "/Users/smcho/Desktop/bracket/[10,20]"
replacements = {"[": "[[]", "]": "[]]"}
new_path = "".join(replacements.get(c, c) for c in path)