lambda函数re.sub公司在Python 3中

2024-04-20 04:46:31 发布

您现在位置:Python中文网/ 问答频道 /正文

  1. 下面的代码是做什么的?在

    part = re.sub('(.{3}).', lambda match: match.group(1), mass, flags=re.DOTALL)
    
  2. Python3与上面的代码片段等价什么? 注意,在python2中,mass变量是一个字符串;而在python3中它是bytearray,即b'0123456789abcdef'

  3. 有没有什么简单的方法可以做到这一点?不使用lambda函数?


Tags: lambda字符串代码rematchgrouppython3mass
1条回答
网友
1楼 · 发布于 2024-04-20 04:46:31
  1. 它每四个字符匹配一次,并用匹配的前三个字符替换它们。所以,它基本上每四个字符跳过一次。例如

    mass = "ABCDEFGHIJKL"
    import re
    part = re.sub('(.{3}).', lambda match: match.group(1), mass, flags=re.DOTALL)
    print part
    

    输出

    ^{pr2}$

    在输出中,您可以看到,每四个字符,即DH和{}都丢失了。

  2. 如果您想在不使用lambda函数的情况下,那么可以使用对匹配的反向引用,如下所示

    part = re.sub('(.{3}).', r'\1', mass, flags=re.DOTALL)
    

    这里r'\1'表示与(.{3})匹配的表达式,这是前三个字符。

  3. 如果您只需跳过每四个字符,您可以使用comprehension简单地使用一个过滤器,然后join如下所示

    part = "".join([mass[i] for i in range(len(mass)) if (i + 1) % 4])
    

相关问题 更多 >