从Python字符串中删除所有数字,但数字后跟点号

时间:2018-09-06 02:19:40

标签: python regex string

说我有一个字符串:

some_string = 'lorum ipsum 123 bar foo 1. \
               more text 46 here 2. some more text here \
               3. and even more text here 789'

如何使用Regex(或任何其他方法)删除除带句点的数字以外的所有数字?

理想的结果:

some_string = 'lorum ipsum bar foo 1. \
               more text here 2. some more text here \
               3. and even more text here'

我是Regex初学者,只尝试过[0-9]\.,但这突显了我想保留的内容。

我想保留1.2.等形式的数字

谢谢。

2 个答案:

答案 0 :(得分:2)

您也可以使用[0-9](?!\.)作为表达式。

这是向前看的示例,本质上是询问下一个字符是否不是'。然后考虑一下。

如果要查找多个数字(例如41),则也可以使用

[0-9](?![0-9]+\.|\.)

我会用here来作为一个事后回顾和向前看的例子,并进行一个游戏here进行测试。

Demo

祝你好运!

答案 1 :(得分:1)

我们可以尝试匹配以下模式:

\s*[0-9]+([^.]|$)

在这里,我们匹配一些可选的空格,后跟任意数量的数字,然后依次跟着除点以外的任何 other 字符。我们捕获此非点字符,然后在替换中使用它。

some_string = 'lorum ipsum 123 bar foo 1. \
               more text 46 here 2. some more text here \
               3. and even more text here 789'
some_string = re.sub(r"\s*[0-9]+([^.]|$)", r"\1", some_string)

print(some_string)

lorum ipsum bar foo 1.                more text here 2. some more text here
            3. and even more text here

Demo

我假设您要保留的数字永远不会包含小数部分。