Python3 str.format动态参数业务场景应用

动态参数核心
list_01 = ['code:H;', 'number:h;', 'separator:*;', 'number:b;']
my_name = '{}{}{}{}'.format(*list_01) 
#此时list_01中的元素会依次传入到{}
print(my_name) # 输出结果
业务应用
  • 原始字符串

    old_str = 'Hh*b*tw*t1*t2'
    
  • 替换规则

    rules = {'code': ['H'], 'number': ['h', 'b', 'tw', 't1', 't2'], 'separator': ['*', '(', ')', '/', '+', '~']}
    
  • 预期结果

    new_str = 'code:H;number:h;separator:*;number:b;separator:*;number:tw;separator:*;number:t1;separator:*;number:t2'
    
  • 业务实现

    def str_replace(old_str:str, rules: dict):
        '''字符替换'''
        new_str = old_str
        idx_values = {}
        for key, old_values in rules.items():
            for value in old_values:
                if value in new_str:
                    idxs = find_all(value, old_str)
                    for idx in idxs:
                        idx_values[idx] = '{}:{};'.format(key, value)
                    new_str = new_str.replace(value, '{}')
        values = []
        keys = list(idx_values.keys())
        keys.sort()
        for idx in keys:
            values.append(idx_values[idx])
        new_str = new_str.format(*values).rstrip(';')
        return new_str
    
总结
  • 如果直接使用str.replace方法,则替换后number中的b继续参与替换,与预期效果不符。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值