如果我有这样的字符串: “我喜欢3.142和2号。”
我想删除2之后但不是3.142中的期间,我应该如何执行此操作?基本上,如何检查一个句号后面的数字是否在句点后没有数字,如何删除该句号?感谢。
答案 0 :(得分:2)
>>> import re
>>> s = "I. always. like the numbers 3.142, 5., 6.12 and 2. Lalala."
>>> re.sub('((\d+)[\.])(?!([\d]+))','\g<2>',s)
'I. always. like the numbers 3.142, 5, 6.12 and 2 Lalala.'
答案 1 :(得分:2)
Wrikken在上述评论中写了一个很好的解决方案, 只有当它出现在一个数字后面并且后面没有数字时才会删除它:
import re
sen = "I like the numbers 3.142 and 2. and lalala."
p = re.compile("(?<=\d)(\.)(?!\d)")
new_sen = p.sub("",sen)
print (new_sen) #prints: I like the numbers 3.142 and 2 and lalala.
答案 2 :(得分:1)
如果您只想删除行尾的句点:
>>> import re
>>> sentence = "I like the numbers 3.142 and 2."
>>> re.sub(r'\.+$', '', sentence)
'I like the numbers 3.142 and 2'
如果要删除任何后跟数字的小数,请使用否定前瞻:
>>> re.sub(r'\.(?!\d)', '', sentence)
'I like the numbers 3.142 and 2'
答案 3 :(得分:0)
在多线模式下,这应该有效。在全球范围内使用。
这将一次处理多行字符串
它找到最后一个句点,在行尾为可选的非换行空格
用先行断言检查。
查找:
\.(?=[^\S\r\n]*$)
替换:""