【问题标题】:Use split function to split recursively in python在python中使用split函数递归分割
【发布时间】:2021-08-04 05:07:42
【问题描述】:

我已经编写了一段代码,它接受一个关键字并使用该特定关键字拆分一个名称,但是当拆分返回列表时,现在我想单独检查返回列表的元素并再次使用不同的关键字拆分它(如果存在),但这次我不想返回另一个子列表,而是应该在同一个列表中扩展元素。

代码如下:-

def get_comb_drugs(keyword, name):

    if keyword in name:
        name = name.split(keyword)

    return name

print(get_comb_drugs(", polymer with", "Acetaldehyde, polymer with ammonia and formaldehyde"))

我得到的输出是:

['Acetaldehyde', ' ammonia and formaldehyde']

但是,我想再次使用 " and " 关键字拆分 'ammonia and formaldehyde',我想要的确切输出是:

['Acetaldehyde', ' ammonia', 'formaldehyde']

指导我达到预期的结果。

【问题讨论】:

    标签: python-3.x split


    【解决方案1】:

    您可以使用 re.split 代替交替模式:

    import re
    separators = [', polymer with', ' and ']
    re.split('|'.join(separators), 'Acetaldehyde, polymer with ammonia and formaldehyde')
    

    这会返回:

    ['Acetaldehyde', ' ammonia', 'formaldehyde']
    

    【讨论】:

    • 是的,但我不能明确传递',聚合物'和其他模式。我有很多这样的关键字。
    • 您可以使用'|'.join 方法将这些分隔符加入到交替模式中,如我编辑的答案所示。
    • 我明白你的意思,但我需要传递许多这样的关键字,这些关键字在一个函数中检查并返回单个列表中的元素。
    • @Rajsxx 当我说你可以使用'|'.join 加入分隔符时,我的意思是将分隔符作为一个列表,正是你所说的你需要的。我已经编辑了我的答案,以便您可以更清楚地看到这一点。