使用正则表达式递归拆分字符串

我如何从这个输入到下面的输出?


word = "f(a(a,b), b(c,d))


def convert(word):    

    ...

    return fixed_word


print(convert(word))


>> ["f", "(a(a,b), b(c,d))"]

此外,我将如何递归创建列表?例如,如果我希望列表看起来像:


word = "f(a(a,b), b(c,d))


print(convert(word))


>> ["f", "a", "a", "b", "b", "c", "d"]

我已经尝试为此使用正则表达式,但没有设法提出有效的解决方案,因此非常感谢任何帮助。


慕侠2389804
浏览 98回答 2
2回答

慕沐林林

我不完全确定您希望实现什么,但对于您的第一个示例,我会推荐如下内容:mo = re.match(re.compile(r"(\w)(\(.*\))"), word)#                            f   (a(a,b)...)result = list(mo.groups()) # or just mo.groups() if it can be a tuple instead of a list对于第二个问题,如果您只想拆分单个字符,我会向您推荐您获得的其他答案。但是,如果您需要多个字符,则可以将字符串拆分为任何非单词字符,例如:word = "f(a(ab,bc), ba(c,d))"result = re.split(re.compile(r"\W+"), word)# ['f', 'a', 'ab', 'bc', 'ba', 'c', 'd', '']如果您在使用正则表达式时遇到问题,它可能会帮助您找到像regex101这样的网站,当然还可以查看re 模块的文档

斯蒂芬大帝

代码import reword = "f(a(a,b), b(c,d))"re.findall(r'[\w]', word)结果['f', 'a', 'a', 'b', 'b', 'c', 'd']
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python