我有一个可能的分隔符列表。我正在处理几千个字符串,需要在找到其中一个分隔符后去除所有内容。注意:永远不会出现字符串中超过 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
关于python - 在没有正则表达式的可能分隔符列表之后删除所有内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38699114/