python - 使用正则表达式递归拆分字符串
问题描述
我如何从这个输入到下面的输出?
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"]
我已经尝试为此使用正则表达式,但没有设法提出有效的解决方案,因此非常感谢任何帮助。
解决方案
我不完全确定您希望实现什么,但对于您的第一个示例,我会推荐如下内容:
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', '']
推荐阅读
- php - 如何在php中共享电报共享链接上的多个值?
- c# - 为什么 Umbraco 模板(视图)不是 Visual Studio 中解决方案/项目的一部分?
- mongodb - 需要在嵌套的 MONGODB 文档中查找最后一个值
- javascript - Vuex 模块状态不会在热重载时更新
- python - 使用 Python 从数据库中提取
- android - 在 Android 中计算函数执行过程中的进度
- python - 插入可变数量的列时正确格式化 SQL 查询
- visual-studio-code - 注释折叠代码块会使其在 Visual Studio 代码中展开
- javascript - 将获取的数据渲染到屏幕上
- java - 反序列化失败的 Kafka 消费者行为