我希望替换提取的数字中的特定字符,但我不知道该怎么做。 在这里,“,”是浮点分隔符,而('或。)是数千个分隔符。我可以这样匹配:
>>> 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)
谢谢
答案 0 :(得分:1)
您可以将re.sub
与
(?<=\d)['.](?=\d)
并替换为空字符串。参见regex demo。
详细信息
(?<=\d)
-(正向后)数字必须立即显示在当前位置的左侧['.]
-单引号或点(?=\d)
-(正向查找)数字必须立即显示在当前位置的右侧。Python:
re.sub(r"(?<=\d)['.](?=\d)", "", myString)