Как я могу сделать, несколько заменяют в Python?

Как спросили и отвечено в этом сообщении, я должен заменить' ['' [[]', и']' с' []]'.

Я пытался использовать 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
  • Как я могу сделать, несколько заменяют в Python?
  • Или как я могу заменить' [' и']' одновременно?

5
задан Community 23 May 2017 в 11:55
поделиться

4 ответа

import re
path2 = re.sub(r'(\[|])', r'[\1]', path)

Объяснение:

\ [|] соответствует скобке (открывающей или закрывающей). Если поместить его в круглые скобки, он будет записан в группу. Затем в строке замены \ 1 будет заменено содержимым группы.

12
ответ дан 18 December 2019 в 10:43
поделиться

Или, чтобы избежать регулярного выражения, я бы заменил открывающую скобку уникальной строкой, затем заменил закрывающую скобку, а затем заменил уникальную строку - может быть, раунд о способе, но, на мой взгляд, он выглядит проще - только тест скажет, быстрее ли он. Кроме того, я бы предпочел повторно использовать одно и то же имя.

т.е.

path1 = "/Users/smcho/Desktop/bracket/[10,20]"
path1 = path1.replace('[','*UNIQUE*')
path1 = path1.replace(']','[]]')
path1 = path1.replace('*UNIQUE*','[[]')

pathName = os.path.join(path1, "*.txt")
0
ответ дан 18 December 2019 в 10:43
поделиться
import re
path2 = re.sub(r'(\[|\])', r'[\1]', path1)
0
ответ дан 18 December 2019 в 10:43
поделиться

Я бы использовал код типа

path = "/Users/smcho/Desktop/bracket/[10,20]"
replacements = {"[": "[[]", "]": "[]]"}
new_path = "".join(replacements.get(c, c) for c in path)
3
ответ дан 18 December 2019 в 10:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: