将Python字符串中的特定实例替换为句号

2024-09-29 07:20:13 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有一根像

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)

但这很明显会使这段时间保持在0和0之间

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

我也要删除数字之间的句点,因为以后我要将文本字符串拆分为句子,这样可以查找句点或\n作为句子的结尾。如果句点是十进制数的一部分,那么使用句点也会破坏句子,这是不理想的


Tags: to结尾it数字some句子sentbob
1条回答
网友
1楼 · 发布于 2024-09-29 07:20:13

... and also periods in between numbers.

数字之间的句点表示它至少在一个数字之前。所以你可以用\.+(?=\d)来匹配这些小数点。+量词不是必须的,但也可以匹配1.......2这样的边缘情况:

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

Live demo

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

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

Live demo

相关问题 更多 >