我有这样的句子 - “这是一个测试.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]+)")
我不知道我哪里错了。有人可以给我一些指示吗?我搜索了之前的帖子并尝试了它们,但它们并不适用于我的情况。
答案 0 :(得分:5)
尝试否定前瞻:
\.(?!\d)
匹配的是任何未跟随数字的句号。
答案 1 :(得分:3)
在正则表达式中,$
特殊字符"[matches] the end of the string or just before the newline at the end of the string"
在这种情况下,假设每行只有一个句子,我建议如下:
\.$
这将仅匹配字符串末尾(或多行字符串的行尾)发生的句点。当然,如果你不能保证每行一句话,那么它们就不适合你。
答案 2 :(得分:0)
怎么样
pattern = re.compile(r'\.(\s)')
wordList = pattern.sub(r'\1', wordList)
这将替换一个句点,后面跟一个只有空格的空格。