我正在尝试删除标点符号后面的数字,但失败:
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,但仍然没有运气。
答案 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'