使用python中的regex删除某个标点符号周围的数字

时间:2019-02-09 13:15:07

标签: python regex

我正在尝试删除标点符号后面的数字,但失败:

a = 'Car 1234 5678;91012 14567'

我需要得到:

a_new = 'Car 1234 14567'

我尝试过:re.sub('\d{4}\;\d{5}', '', ss),但是它有效,但是,我不知道;周围有多少位数,所以我尝试了:

re.sub('\d\;\d', '', ss)并且失败(输出与输入相同)。

我正在学习regex101.com,但仍然没有运气。

4 个答案:

答案 0 :(得分:2)

您可以简单地执行:

import re
a='Car 1234 5678;91012 14567'

re.sub("[0-9]*;[0-9]*","",a)

输出:

'Car 1234  14567'

答案 1 :(得分:2)

只需使用+来表示更多数字,如下所示。

a = 'Car 1234 5678;91012 14567'
re.sub('\d+;\d+ ','',a)

输出:

'Car 1234 14567'

答案 2 :(得分:1)

import re

a = 'Car 1234 5678;91012 14567'

print(re.sub('\d*;\d* ', '', a))

#'Car 1234 14567'

请注意re模式结尾处的尾随空格。它将导致中间只剩下一个空格,而不是两个。

答案 3 :(得分:1)

您使用过\d;\d的正则表达式可以正常工作,但是它只能替换半角冒号周围的数字,因为\ d表示一位数字。

您的解决方案将是\d+;\d+,带有加号的符号将查找至少一个,但与位数一样多。

所以...

a = 'Car 1234 5678;91012 14567'

re.sub('\d+;\d+ ', '', a)

返回

'Car 1234  14567'