python 替换指定位置关键词
  X5zJxoD00Cah 2023年11月02日 59 0

需求

python 替换指定位置关键词_字符串

背景

请教一个python正则表达式re的问题


我想用替换匹配到的第指定个字符


例如 原字符串 "++++"

可以匹配出4个"+"

我想将第3 第4个"+" 替换为"-"


re.sub只能定义 替换全部匹配字符 或者替换前几个字符 但是没办法替换指定索引位置的字符


参考思路

https://blog.csdn.net/u012063507/article/details/79271698

解决1 

单个字符的替换

def sub_(string = '+a+b+c+d', pattern = '+', repl = '-', position = [2,3]):
    list_pattern = []
    for string_i, string_j in enumerate(string):
        if string_j == pattern:
            list_pattern.append(string_i)
    for position_i in position:
        string = string[:list_pattern[position_i]] + repl + string[list_pattern[position_i]+1:]
    new_string = string
    return new_string

解决2

多字节字符的替换

def sub_mul(string = '+a{}+b{}+c{}+d{}', pattern = '{}', repl = '[[]]', position = [2,3]):
    '''获取长度'''
    len_pattern = len(pattern)
    len_repl = len(repl)
    for position_i in position:
        
        '''获取关键词位置(局限: 根据关键词词首匹配)'''
        list_pattern = []
        for string_i, string_j in enumerate(string):
            if string_j == pattern[0]:
                list_pattern.append(string_i)
        # print(list_pattern)
        
        '''插入关键词(不能直接删除关键词, 会影响position定位第几个元素'''
        string_left = string[:list_pattern[position_i]]
        # print(string_left)
        string_right = string[list_pattern[position_i]:]
        # print(string_right)
        string = string_left + repl + string_right
        # print(string, '\n')
        
    # '''替换关键词(如果将该函数放在循环中 则在函数外部替换)'''
    # new_string = string.replace(repl+pattern, repl)
    
    return string

应用2

for l,m in enumerate(list_str):
    form_ = sub_mul(string= form_, pattern= '{}', repl= m, position= [l]) # 注意 循环内部不要覆盖string
for l,m in enumerate(list_str):
    form_ = form_.replace(m+'{}', '.'+m)
form_

解决3

多关键词依次替换

def sub_mul_loo(string = '+a{}+b{}+c{}+d{}', pattern = '{}', list_str = ['[]', '([])','{([])}'], str_add = ''):
    for list_i, list_j in enumerate(list_str):
        repl = list_j
        position = list_i
        
        '''获取关键词位置(局限: 根据关键词词首匹配)'''
        list_pattern = []
        for string_i, string_j in enumerate(string):
            if string_j == pattern[0]:
                list_pattern.append(string_i)
        
        '''插入关键词(不能直接删除关键词, 会影响position定位第几个元素'''
        string_left = string[:list_pattern[position]]
        string_right = string[list_pattern[position]:]
        string = string_left + repl + string_right
    
    '''循环结束后替换'''
    for list_i, list_j in enumerate(list_str):
        string = string.replace(list_j + pattern, str_add + list_j)
    
    return string

应用3

form_ = sub_mul_loo(string= form_, pattern= '{}', list_str= list_str, str_add= '.')
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  X5zJxoD00Cah   2023年12月11日   26   0   0 知乎Python迭代器
  X5zJxoD00Cah   2023年12月12日   34   0   0 Python.net
X5zJxoD00Cah