GETE2020 2022-04-06 17:08 采纳率: 50%
浏览 32
已结题

python sub()为什么把括号外的字符也替换了?

import re
a = "你在北京天安门:"
key1='北京'
rul5=re.compile(key1+r'+([\u4e00-\u9fa5]+):')
res5=rul5.findall(a)
res51=rul5.sub('中山路',a)
print(res5)
print(res51)
结果:
['天安门']
你在中山路
这是根据我代码简化的一个例子,findall是找出‘北京’后面的汉字‘天安门’,为什么sub会把‘北京’也替换了?需要怎么改?

  • 写回答

2条回答 默认 最新

  • GavinHaydy 2022-04-06 18:01
    关注

    img

    
    import re
    a = "你在北京天安门:"
    key1='北京'
    rul5=re.compile(key1+r'+([\u4e00-\u9fa5]+):')
    res5=rul5.findall(a)
    rul6 = re.compile(res5[0].encode('unicode_escape').decode('utf-8'))
    res51=rul6.sub('中山路',a)
    
    print(res5)
    print(res51)
    

    不知道这是不是你想要的

    rul5 匹配的是 '北京天安门' 所以你用rul5.sub会把'北京'一起替换掉 用res5查出来的字符串重新生成一个正则就行了

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 4月14日
  • 已采纳回答 4月6日
  • 创建了问题 4月6日

悬赏问题

  • ¥15 关于#hadoop#的问题
  • ¥15 (标签-Python|关键词-socket)
  • ¥15 keil里为什么main.c定义的函数在it.c调用不了
  • ¥50 切换TabTip键盘的输入法
  • ¥15 可否在不同线程中调用封装数据库操作的类
  • ¥15 微带串馈天线阵列每个阵元宽度计算
  • ¥15 keil的map文件中Image component sizes各项意思
  • ¥20 求个正点原子stm32f407开发版的贪吃蛇游戏
  • ¥15 划分vlan后,链路不通了?
  • ¥20 求各位懂行的人,注册表能不能看到usb使用得具体信息,干了什么,传输了什么数据