【问题标题】:python re.sub : replace substring with stringpython re.sub:用字符串替换子字符串
【发布时间】:2014-10-12 14:35:06
【问题描述】:

在python中,

使用re.sub,如何将子字符串替换为新字符串?

来自

number = "20"
s = "hello number 10, Agosto 19"

s = "hello number 20, Agosto 19"

我试试

re.sub(r'number ([0-9]*)', number, s)

编辑

数字10是一个例子,字符串中的数字可以是任意数字。

【问题讨论】:

  • 你尝试过什么吗?你在哪里卡住了?
  • 是的,你可以使用re.sub来做到这一点。
  • "hello number 10, Agosto 19".replace("10","20")

标签: python regex


【解决方案1】:

你是说这个吗?

>>> import re
>>> m = re.sub(r'10', r'20', "hello number 10, Agosto 19")
>>> m
'hello number 20, Agosto 19'

使用lookbehind,

>>> number = "20"
>>> number
'20'
>>> m = re.sub(r'(?<=number )\d+', number, "hello number 10, Agosto 19")
>>> m
'hello number 20, Agosto 19'

【讨论】:

    【解决方案2】:

    如果你不知道号码但知道它后面跟一个,

    import re
    re.sub("\d+(?=,)","20",s) # one or more digits followed by a ,
    hello number 20, Agosto 19
    
    import re
    re.sub("(\d+)","20",s,1) # first occurrence
    hello number 20, Agosto 19
    

    【讨论】:

    • 您的前瞻不正确。应该是\d+(?=,)
    【解决方案3】:

    不要在这种简单的情况下使用正则表达式。正常string manipulation 就足够了(而且速度很快):

    s = "hello number 10, Agosto 19"
    s = s.replace('10', '20')
    

    【讨论】:

    • 除非 '1010' 当然不应该转换为 '2020' 并且 OP 忽略了他们真正在如何替换 words 的事实(例如,使用正则表达式单词边界)
    • 我知道您的回答已经超过 3 年了。我有一个问题:如果目标字符串有多个实例,而我只需要替换一个特定的实例怎么办?例如,s = "hello number 10, Agosto 19 if you like 10",我只想替换第二个 10?
    • @Heinz 没有开箱即用的东西。你可以沿着这个实现一些东西:*.com/q/35091557/1190388
    最近更新 更多