Skip to main content
 首页 » 编程设计

python之在没有正则表达式的可能分隔符列表之后删除所有内容

2025年05月04日23cmt

我有一个可能的分隔符列表。我正在处理几千个字符串,需要在找到其中一个分隔符后去除所有内容。注意:永远不会出现字符串中超过 1 个分隔符的情况。

例子:

patterns = ['abc', 'def'] 
example_string = 'hello world abc 123' 

如果 example_string 是这种情况下的输入,则输出应该是 hello world abc。

我目前正在使用正则表达式作为解决方案,这是有效的,但我想使用一种不使用正则表达式的方法。这是我当前的实现:

 regex = r'(.*)(' + '|'.join(patterns) + r')(.*)' 
 example_string= re.sub(regex, r'\1\2', example_string).lstrip() 

我正在考虑搜索以查看模式中的分隔符之一是否在字符串中,然后从分隔符长度的位置到字符串末尾索引字符串。

不确定这是否是实现它的好方法,或者是否可行。

请您参考如下方法:

您可以使用 find功能。这里检查每个模式,如果找到,则在模式的开始位置(或通过添加模式的长度来结束模式的位置,如示例中)对字符串进行切片:

    patterns = ['abc', 'def'] 
    example_string = 'hello world abc 123' 
    for pattern in patterns: 
        location = example_string.find(pattern) 
        if location >= 0: 
            example_string = example_string[:location + len(pattern)] 
            print example_string 
            break