【问题标题】:Python Regex to replace each character in groupPython正则表达式替换组中的每个字符
【发布时间】:2020-12-16 17:45:46
【问题描述】:

假设我有一个这样的字符串

txt = 'Source_Test_MyStuff_v001.0746.exr'
name = re.sub(r'\.([0-9]+)\.', '#', txt )

输出:

Source_Test_MyStuff_full_v001#exr

我的目标是找到仅包含两个句点之间的数字的组......并将句点 (.) 中的每个数字替换为井号。

想要的结果是这样... 输出:

Source_Test_MyStuff_full_v001.####.exr

其他可能出现的例子:

Source_Test_MyStuff_v001.0586006.exr >> Source_Test_MyStuff_v001.#######.exr
Source_Test_MyStuff_v001.76.exr >> Source_Test_MyStuff_v001.##.exr

如何使用 python 和正则表达式实现这一点?

【问题讨论】:

    标签: python regex


    【解决方案1】:

    你可以使用

    re.sub(r'(?<=\.)[0-9]+(?=\.)', lambda x: '#'*len(x.group()), txt )
    

    (?&lt;=\.)[0-9]+(?=\.) 正则表达式仅匹配一个或多个数字,当它们在两端用点字符括起来时,lambda x: '#'*len(x.group()) 用与匹配长度相同数量的# 字符替换匹配项。

    查看full Python demo

    import re
    txt = 'Source_Test_MyStuff_v001.0746.exr'
    print( re.sub(r'(?<=\.)[0-9]+(?=\.)', lambda x: '#'*len(x.group()), txt ) )
    # => Source_Test_MyStuff_v001.####.exr
    

    【讨论】:

      猜你喜欢
      • 2013-01-10
      • 2022-11-07
      • 1970-01-01
      • 2020-09-02
      • 2013-01-18
      • 1970-01-01
      • 2013-06-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多