开发者社区> 问答> 正文

将多次出现的字符替换为一个

我有一个字符串: a = '0202201131181'

我想将其中的所有多个出现的数字1替换为一个,但是如果仅找到一个出现的“ 1”,则将其替换为空字符串”。

我的最终目标是获得:

a = '0202201318' 此处,字符“ 8”之后的“ 1”仅出现一次,因此将其替换为空字符串,但将字符“ 3”之前的“ 11”以及字符“ 3”之后的“ 11”替换为“ 1”。

这是我尝试过的if-else代码块,部分正确:

if '11' in a:

a = a.replace("11","1")

else:

a = a.replace("1","")

但是它输出'02022013181',这是不正确的。这个怎么做?

展开
收起
游客6qcs5bpxssri2 2019-09-27 09:51:37 1803 0
1 条回答
写回答
取消 提交回答
  • 基于正则表达式的解决方案是最好的。 仅出于记录目的,这是不使用正则表达式的另一种逻辑:

    a = '110202201111311811'

    new_str = []

    for i in range(len(a)):

    if a[i] == '1':

       if (i!= (len(a)-1) and a[i+1] == '1') and (i!=0 and a[i-1] != '1'):
    
           new_str.append(a[i])
    

    else:

       new_str.append(a[i])
    

    print ("".join(x for x in new_str))

    输出:

    02022013181

    2019-09-28 18:30:10
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载