如何替换大海捞针的第N个外观?(蟒蛇)

如何替换大海捞针的第N个外观?(蟒蛇),第1张

如何替换大海捞针的第N个外观?(蟒蛇)

我已经为此苦苦挣扎了一段时间,但是我找到了一个我认为非常pythonic的解决方案:

>>> def nth_matcher(n, replacement):...     def alternate(n):...         i=0...         while True:...  i += 1...  yield i%n == 0...     gen = alternate(n)...     def match(m):...         replace = gen.next()...         if replace:...  return replacement...         else:...  return m.group(0)...     return match...     ... >>> re.sub("([0-9])", nth_matcher(3, "X"), "1234567890")'12X45X78X0'

编辑 :匹配器由两部分组成:

  1. alternate(n)
    功能。这将返回一个生成器,该生成器返回一个无限序列True / False,其中每个第n个值均为True。觉得像
    list(alternate(3)) == [False, False, True, False, False, True, False, ...]

  2. match(m)
    功能。这是传递给的函数
    re.sub
    :它获取
    alternate(n)
    gen.next()
    )中的下一个值,如果是,
    True
    它将替换匹配的值;否则,它将保持不变(将其自身替换)。

我希望这足够清楚。如果我的解释不明确,请这样说,我会改善的。



欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5640271.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-12-16
下一篇2022-12-16

发表评论

登录后才能评论

评论列表(0条)

    保存