代码之家  ›  专栏  ›  技术社区  ›  jason

regex只在数字旁边用“-x”替换“(x)”[重复]

  •  -5
  • jason  · 技术社区  · 6 年前

    这个问题已经有了答案:

    如何将字符串中的所有括号都改为减号?仅当紧跟其后的下一个字符 ( 是数字吗?

    输入: foo (4,301) bar blah (4)% blah (USD)

    输出: foo -4,301 bar blah -4% blah (USD)

    我所找到的一切都与得到一个数字而不是改变字符串有关…

    num = -int(test.translate(None,"(),"))

    那不是我想要的

    2 回复  |  直到 6 年前
        1
  •  2
  •   Rakesh    6 年前

    使用 re.sub

    前任:

    import re
    s = "foo (4,301) bar blah (4)% blah (USD)"
    print( re.sub(r"\((\d*,?\d*)\)", r"-\1", s) )
    

    输出:

    foo -4,301 bar blah -4% blah (USD)
    
        2
  •  0
  •   Sunitha    6 年前
    import re
    s = 'foo (4,301) bar blah (4)% blah (USD)'
    re.sub(r'\((\d[^\)]*)\)', r'-\1', s)
    # 'foo -4,301 bar blah -4% blah (USD)'