4

我有这样的句子——“这是一个测试。4.55 和 5,000。” 我想删除句子末尾的句点,而不是数字之间的句点。我的输出必须是 - “这是一个测试 4.55 和 5,000” 我尝试了以下选项,但没有得到所需的输出:

wordList = "this is a test. 4.55 and 5,000."
pattern3 = re.compile("[^\w\d]+")
wordList = pattern3.sub(' ',wordList)

还尝试了以下2:

pattern3 = re.compile("[^\w]|^[0-9]\.[0-9]")
pattern3 = re.compile("[^\w]|^([0-9]/.[0-9]+)")

我不知道我哪里错了。有人可以给我一些指示吗?我搜索了早期的帖子并尝试了它们,但它们不适用于我的情况。

4

3 回答 3

6

尝试否定前瞻:

\.(?!\d)

这匹配的是任何不带数字的句点。

于 2012-09-16T16:02:18.730 回答
5

在正则表达式中,$特殊字符“[匹配]字符串的结尾或字符串结尾的换行符之前”

在这种情况下,假设每行只有一个句子,我建议如下:

\.$

这将仅匹配出现在字符串末尾(或多行字符串的行尾)的句点。当然,如果您不能保证每行一个句子,那么它们不是您的解决方案。

于 2012-09-16T16:10:26.797 回答
0

怎么样

pattern = re.compile(r'\.(\s)')
wordList = pattern.sub(r'\1', wordList)

这会用空格替换句点后跟空格。

于 2012-09-16T16:02:38.393 回答