0

我正在看一个看起来像这样的声明:

def fn(somelongstring):
    shorterstring = somelongstring.replace('very, ','').replace('long ', '')

fn('some very, very, very, long string')

在 Python 中执行这种操作的最有效方法是什么?


一些注意事项:

  • 替换调用的列表很长,但预先确定并知道
  • 长字符串是函数的参数,并且可以变得庞大;它包括子字符串的重复
  • 我的直觉是删除有机会使用来自替换的不同、更快的算法
  • 链式替换调用可能每次都在字符串上进行迭代。必须有一种方法可以在没有所有这些重复迭代的情况下做到这一点。
4

1 回答 1

3

使用回复:

import re
shorterstring = re.sub('very, |long ', '', 'some very, very, very, long string')

您需要确保要替换为空的子字符串按长度降序排列,以便首先替换较长的匹配项。

或者,您可以避免链接调用,并使用:

reduce(lambda a, b: a.replace(b, ''), ['very, ', 'long '], s)
于 2013-09-13T14:40:55.583 回答