替换非数字字符
我需要把字符串中的非数字字符替换掉。
比如说,"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())
这样的占位符就是用来表示代码的地方。其他人看到这个问题后,会根据他们的经验给出建议或者解决方案。
总之,技术论坛是一个很好的资源,可以帮助我们解决编程中遇到的各种问题。无论是新手还是有经验的程序员,都能在这里找到有用的信息。