Python 替换字符串/句子中模式的一部分?

Python 替换字符串/句子中模式的一部分?,python,regex,Python,Regex,例如,有一个文本blob "Text blob1. Text blob2. Text blob3 45.6%. Text blob4." 我想用空格“替换点,即”。但同时,数字之间出现的点应该保留。例如,前面的示例应转换为: "Text blob1 Text blob2 Text blob3 45.6% Text blob4" 如果我使用: p = re.compile('\.') s = p.sub(' ', s) 它用空格替换所有的点 关于什么模

例如,有一个文本blob

"Text blob1. Text blob2. Text blob3 45.6%. Text blob4."
我想用空格
替换点,即
。但同时,数字之间出现的点应该保留。例如,前面的示例应转换为:

"Text blob1 Text blob2 Text blob3 45.6% Text blob4"
如果我使用:

p = re.compile('\.')
s = p.sub(' ', s)
它用空格替换所有的点

关于什么模式或方法在这里有效,有什么建议吗?

使用

\.(?!(?<=\d\.)\d)

\(?!(?此处可能不需要正则表达式。请用空格替换点空格

s.replace('. ', ' ')
如果有任何句点后跟换行符或终止字符串,这还不够好,但仍然不需要正则表达式:

s.replace('. ', ' ').replace('.\n', '\n').rstrip('.')

假设绳子是

A.B.C blob3 45.6%. Text blob4.
匹配除前面和后面都有数字的句点之外的所有句点

如果在替换之后,字符串

A B C blob3 45.6% Text blob4
A.B.C blob3 45.6% Text blob4
如果需要,可以将
re.sub
与正则表达式一起使用

r'(?<!\d)\.|\.(?!\d)'
r'(?<!\S)\.|\.(?!\S)'
如果需要,可以将
re.sub
与正则表达式一起使用

r'(?<!\d)\.|\.(?!\d)'
r'(?<!\S)\.|\.(?!\S)'

r'(?你所说的“数字之间出现的点应该保留”是什么意思?@Hussain我猜这听起来像什么,我明白了。@HarshalParekh:)这次我真的要研究它。这是一个非常简单的问题,但当我看到那些正面和负面的后视值时,我总是感到有些恐慌。?!?>?=应该提到,如果输入像
“Test blob1.Text blob2”
,它将失败。
r'(?<=^|\s)\.|\.(?=\s|$)'