替换python字符串中特定的句点实例

时间:2018-03-25 23:39:46

标签: python regex

假设我有一个像

这样的字符串
s=""" Bob sent some money to Ana. It was 10.23 dollars. Ana thanked him. 

"""

我希望输出为

Bob sent some money to Ana. It was dollars. Ana thanked him.

所以基本上只保留字母和句号,这标志着句子的结束。删除非字母字符以及数字之间的句点。

我正在尝试使用

re.sub(r"[^A-za-z.\n]"," ",s)

但这显然会使时间介于两者之间。并给出

' Bob sent some money to Ana. It was   .   dollars. Ana thanked him. \n\n'

我想删除数字之间的句点,因为稍后我想将文本字符串分解为句子,并且会查找句点或\ n作为句子的结尾。有一个十进制数的一部分的句号也将使用该句号打破句子,这是不理想的

1 个答案:

答案 0 :(得分:1)

  

......以及数字之间的句号。

数字之间的句点意味着它至少在一位数之前。因此,您可以将这些小数点与\.+(?=\d)匹配。 +量词不是必须的,但也可以匹配1.......2之类的边缘情况:

re.sub(r"\.+(?=\d)|[^a-z\s.]", "", s, 0, re.IGNORECASE);

Live demo

您可能还想删除额外的前导空格。如果是这样,那么在你的正则表达式中考虑它们:

\s*(?:\d+\.+(?=\d)|[^a-z\s.])

Live demo

相关问题