为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕侠2389804 2022-06-28 10:48:46
我如何从这个输入到下面的输出?word = "f(a(a,b), b(c,d))def convert(word):        ...    return fixed_wordprint(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"]我已经尝试为此使用正则表达式,但没有设法提出有效的解决方案,因此非常感谢任何帮助。
查看完整描述

2 回答

?
慕沐林林

TA贡献2016条经验 获得超9个赞

我不完全确定您希望实现什么,但对于您的第一个示例,我会推荐如下内容:


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 模块的文档


查看完整回答
反对 回复 2022-06-28
?
斯蒂芬大帝

TA贡献1827条经验 获得超8个赞

代码


import re

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

re.findall(r'[\w]', word)

结果


['f', 'a', 'a', 'b', 'b', 'c', 'd']


查看完整回答
反对 回复 2022-06-28
  • 2 回答
  • 0 关注
  • 97 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信