4

我想删除任何 3 位或少于 3 位的数字。有人可以帮我做一个正则表达式吗?

目前,我的代码删除了它找到的所有数字。

     # Cleans Numbers
     def cleanNumbers(stringToClean):
       stringToClean = re.sub(r'[0-9]*', r'', stringToClean)

       print 'String after cleaning : %s' %stringToClean

       return stringToClean

数字将被空格包围。我传递给函数的示例字符串:

一段时间后,Win8 客户端上的连接中断。【坚持】123 1 22 333 4444 554665 645fdgf45 ds3434 457870978934787843 345342kl

我将上述函数调用如下:

# Main function, calls other functions          
def main():

   # Parsing the input query
   searchQuery = open('input.txt', 'r').read()
   print 'Input query : %s' %searchQuery

   # Cleaning the input query
   string = CleanUpText.cleanNumbers(searchQuery)
4

4 回答 4

9

\b[0-9]{1,3}\b查找最多包含三位数字的数字块。

于 2013-02-26T21:21:28.680 回答
1
re.sub(r'[0-9]{,3}',r'',stringToClean)
于 2013-02-26T21:16:37.073 回答
1

我已更正了“3 或小于 3”的问题

鉴于此,它应该很简单:\b\d{1,3}\b

于 2013-02-26T21:35:26.813 回答
-1

你可以使用这样的正则表达式

r'\b[0-9]{1,2}\b'

编辑:对不起,我没有真正思考就快速写下了我的答案。例如,您必须使用边界,以免捕获 3456

于 2013-02-26T21:11:52.237 回答