【问题标题】:Python - how to find string and remove string plus next x charactersPython - 如何查找字符串并删除字符串加上下一个 x 字符
【发布时间】:2022-11-23 00:01:46
【问题描述】:

我有以下字符串:

mystr = '(string_to_delete_20221012_11-36) keep this (string_to_delete_20221016_22-22) keep this (string_to_delete_20221017_20-55) keep this'

我想删除所有条目(string_to_deletexxxxxxxxxxxxxxx) (包括尾随空格)

我有点需要伪代码如下:

如果您找到一个字符串 (string_to_delete 然后替换该字符串和时间戳,右括号和尾随空格为 null 例如删除字符串(string_to_delete_20221012_11-36)

我会使用列表理解,但考虑到并非所有字符串都包含在括号内,我看不出我可以使用什么来通过 string.split() 创建列表。

这是需要正则表达式的东西吗?

【问题讨论】:

    标签: python-3.x string


    【解决方案1】:

    它似乎是放置正则表达式的好地方:

    import re
    
    pattern = r'(string_to_delete_.*?)s*'
    
    mystr = '(string_to_delete_20221012_11-36) keep this (string_to_delete_20221016_22-22) keep this (string_to_delete_20221017_20-55) keep this'
    
    for match in re.finditer(pattern, mystr):
        print(match)
    

    匹配对象及其索引的结果:

    >> <re.Match object; span=(0, 34), match='(string_to_delete_20221012_11-36) '>
    >> <re.Match object; span=(44, 78), match='(string_to_delete_20221016_22-22) '>
    >> <re.Match object; span=(88, 122), match='(string_to_delete_20221017_20-55) '>
    

    现在只需删除[0, 34][44, 78][88, 122]范围内的字符就可以完成工作

    简短的正则表达式分解:(string_to_delete_.*?)s*

    1. ( 寻找左括号 - 需要转义
    2. 匹配字符串string_to_delete_
    3. .*? 查找零个或多个字符(如果有)
    4. )匹配右括号
    5. s* 之后包含零个或多个空格

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-11-06
      • 2023-04-06
      • 2012-11-27
      • 1970-01-01
      • 1970-01-01
      • 2012-08-02
      • 1970-01-01
      相关资源
      最近更新 更多