Python 3.x 正则表达式使用Python将浮点数替换为;点“;

Python 3.x 正则表达式使用Python将浮点数替换为;点“;,python-3.x,Python 3.x,我想将字符串中浮点数中出现的“.”替换为“点”,反之亦然 例如: t=' I am coder. I work in Google. I earn 98748.85' Expected output: ' I am coder. I work in Google. I earn 98748dot85' Then convert again: ' I am coder. I work in Google. I earn 98748.85' 我的代码: import re re.sub(r'\

我想将字符串中浮点数中出现的“.”替换为“点”,反之亦然

例如:

t=' I am coder. I work in Google. I earn 98748.85'
Expected output: ' I am coder. I work in Google. I earn 98748dot85'
Then convert again: ' I am coder. I work in Google. I earn 98748.85'
我的代码:

 import re
 re.sub(r'\d+\.\d+',r"dot", t)
 output: ' I am coder. I work in Google. I earn dot'

你要用“点”替换整个匹配,而不仅仅是点

我知道两种解决方法:

1.正面环视断言:
在这里,您将匹配整个浮点,但请记住捕获组中点之前和之后的部分。然后将替换字符串更改为“第一个捕获组,然后是字符串“点”,然后是第二个捕获组”。

谢谢。这对我有用。你的意思是说,对于.85,它不起作用?是的,这些建议不起作用。你也想要34块吗。要工作吗?如果第一个数字是可选的,那么您可以删除它,即
r'\.(?=\d)
r'\.(\d+)
。我的意思是:它应该适用于所有情况,如85.85、85.0、0.85、.85等等。。代码应该是通用的。你试过我的建议吗?它们适用于您列出的所有案例(但不适用于
34.
re.sub(r'(?<=\d)\.(?=\d)',r"dot", t)
re.sub(r'(\d+)\.(\d+)',r"\1dot\2", t)