替换非数字字符

12 投票
6 回答
10672 浏览
提问于 2025-04-16 03:42

我需要把字符串中的非数字字符替换掉。

比如说,"8-4545-225-144" 需要变成 "84545225144";"$334fdf890==- " 需要变成 "334890"。

我该怎么做呢?

6 个回答

3

filter(str.isdigit, s) 这个方法比这里列出的其他方法要快,而且我觉得它也更清晰。

不过,如果你用的字符串是unicode类型,它会报一个TypeError错误。根据你对“数字”的定义,这个方法可能比另一个 filter(type(s).isdigit, s) 方法更有用,虽然后者稍微慢一点,但对我来说,它仍然比正则表达式和列表推导式的方法快。

补充: 不过,如果你用的是Python 3,那你就得用 "".join(filter(str.isdigit, s)),这样做的性能就会变得差不多一样糟糕。真是进步啊。

18

这可以通过正则表达式来实现。

import re

...

return re.sub(r'\D', '', theString)
23

在编程中,有时候我们会遇到一些问题,比如代码运行不正常或者出现错误。这时候,我们可以去一些技术论坛,比如StackOverflow,寻找解决方案。在这些论坛上,很多人会分享他们的经验和解决方法。

通常,提问的人会描述他们遇到的问题,并附上相关的代码片段,像

''.join(c for c in S if c.isdigit())
这样的占位符就是用来表示代码的地方。其他人看到这个问题后,会根据他们的经验给出建议或者解决方案。

总之,技术论坛是一个很好的资源,可以帮助我们解决编程中遇到的各种问题。无论是新手还是有经验的程序员,都能在这里找到有用的信息。

撰写回答