我如何从这个输入到下面的输出?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 模块的文档
斯蒂芬大帝
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']
添加回答
举报
0/150
提交
取消