Python 3.x 如何使用line.replace通过循环在字符串中属于另一个括号集中的元素的任何括号周围添加空格?

Python 3.x 如何使用line.replace通过循环在字符串中属于另一个括号集中的元素的任何括号周围添加空格?,python-3.x,set,list-comprehension,tokenize,square-bracket,Python 3.x,Set,List Comprehension,Tokenize,Square Bracket,方括号={')、'('、'{'、'}'、'['、'>'、']'、'尝试列表操作: import functools def replaceif(x): if x in brackets: x=' '+x+' ' return x brackets = [')', '(', '{', '}', '[', '>', ']', '<'] string_line = '<[2{12.5 6.0}](3 -4 5)>' print(functools

方括号={')、'('、'{'、'}'、'['、'>'、']'、'尝试列表操作:

import functools
def replaceif(x):
    if x in brackets:
        x=' '+x+' '
    return x
brackets = [')', '(', '{', '}', '[', '>', ']', '<']
string_line = '<[2{12.5 6.0}](3 -4 5)>'
print(functools.reduce(lambda x,y: replaceif(x)+replaceif(y), string_line))
导入工具
def replaceif(x):
如果括号中有x:
x=''+x+''
返回x

方括号=[')'、('、'{'、'}'、'['、'>'、']'、'您可以尝试使用正则表达式。最后出现的愚蠢的
while
循环是因为我不知道如何替换重叠的匹配项。如果您能就此提供任何建议,我将不胜感激

#! /usr/bin/python3

import re

string_line = '<[2{12.5 6.0}](3 -4 5)>'

while True:
    string_line, count = re.subn ('[{}<>\[\]()][{}<>\[\]()]', lambda x: '{} {}'.format (*x.group () ), string_line)
    if not count: break

print (string_line)
!/usr/bin/python3
进口稀土
字符串\行=“”
尽管如此:
string\u line,count=re.subn('[{}\[\]()][{}\[\]()]',lambda x:'{}{}{}'。格式(*x.group()),string\u line)
如果不计算:中断
打印(字符串\行)
这将产生:

< [2{12.5 6.0} ] (3 -4 5) >
<[2{12.56.0}](3-45)>

基本上是在以下两个括号之间插入空格。如果这不是预期的行为,请让我知道预期的输出。

这将产生
[')'、'('、'{'、'}'、'['、'>'、']']、'为什么不在括号中为x编写
['+x+']
?这与您的代码相同,也与问题完全无关。