我有以下字符串,其中子字符串的格式2.5
不正确:'It costs 2. 5. That is a lot.'
如何删除之间的空间2.
和5
?
我试过了:
s = 'It costs 2. 5. That is a lot.'
s = s.replace('. ', '.')
print(s) # It costs 2.5.That is a lot.
但是,这也会删除5.
和之间正确放置的空间T
。我想我正在寻找sed样式的regex替代变量,例如s/\. \([0-9]\)/.\1/g
。如何在Python中做到这一点?
如果后面的字符串可以以数字开头,那么您也可以在第二个数字之后匹配点。
如果您不想在两者之间匹配换行符,则可以匹配所有不带换行符的空白字符。
\b(\d+\.)[^\S\r\n]+(\d+\.)
说明
\b
单词边界(\d+\.)
捕获组1,匹配1个以上的数字和一个点[^\S\r\n]+
匹配1个以上无换行符的空白字符(\d+\.)
捕获组2,匹配1个以上的数字和下一个点在替换使用组1和组2中。
例如
import re
s = ("It costs 2. 5. That is a lot.\n"
"It costs 2. 5 items, that is a lot.")
pattern = r"\b(\d+\.)[^\S\r\n]+(\d+\.)"
print(re.sub(pattern, r"\1\2", s))
输出量
It costs 2.5. That is a lot.
It costs 2. 5 items, that is a lot.
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句