字符串匹配后替换特定字符

时间:2019-03-09 17:41:14

标签: python regex

我希望替换提取的数字中的特定字符,但我不知道该怎么做。 在这里,“,”是浮点分隔符,而('或。)是数千个分隔符。我可以这样匹配:

>>> myString = "I buy 456'123,45 then 45.654 then 123. I'm 30."
>>> re.findall(r"(?:\d+)(?:['|.]\d+)+(?:[,]\d+)?", myString)
["456'123,45", '45.654']

我想在字符串中替换所有千位分隔符以获取此信息:

>>> newString
"I buy 456123,45 then 45654 then 123. I'm 30."

我很确定我需要使用组和子组来替换我想要的内容,但是当“()+”出现时我不知道如何处理组,数字的长度也可以是很长 (例如:123'456'789'123'456'789,123)

谢谢

1 个答案:

答案 0 :(得分:1)

您可以将re.sub

一起使用
(?<=\d)['.](?=\d)

并替换为空字符串。参见regex demo

详细信息

  • (?<=\d)-(正向后)数字必须立即显示在当前位置的左侧
  • ['.]-单引号或点
  • (?=\d)-(正向查找)数字必须立即显示在当前位置的右侧。

Python:

re.sub(r"(?<=\d)['.](?=\d)", "", myString)
相关问题