从Python中的字符串中删除数字

ben*_*890 7 python nltk

有没有一种有效的方法从python中删除字符串中的数字?使用nltk或基础python?

谢谢,本

Mar*_*cny 25

是的,您可以使用正则表达式:

import re
output = re.sub(r'\d+', '', '123hello 456world')
print output  # 'hello world'
Run Code Online (Sandbox Code Playgroud)


Rob*_*obᵩ 11

str.translate 应该是有效的.

In [7]: 'hello467'.translate(None, '0123456789')
Out[7]: 'hello'
Run Code Online (Sandbox Code Playgroud)

比较str.translate反对re.sub:

In [13]: %%timeit r=re.compile(r'\d')
output = r.sub('', my_str)
   ....: 
100000 loops, best of 3: 5.46 µs per loop

In [16]: %%timeit pass
output = my_str.translate(None, '0123456789')
   ....: 
1000000 loops, best of 3: 713 ns per loop
Run Code Online (Sandbox Code Playgroud)

  • 所以你需要`my_str.translate({ord(ch): None for ch in '0123456789'})` in 3.x (6认同)
  • @Rob - 是的,我错过了第一行是设置行。看看一些最好/最坏的情况,翻译似乎在最坏的情况下表现得更好。使用 'python -m timeit' 我遇到了以下支持翻译的内容;`'123hello 456world' - x5.0` `'1234567890987654321012345678909876543210' - x17.0` `'5a$%&^@)9lhk45g08j%Gmj3g.'09j world x`1234567890987654321012345678909876543210` (2认同)

opt*_*ode 5

尝试重新。

import re
my_str = '123hello 456world'
output = re.sub('[0-9]+', '', my_str)
Run Code Online (Sandbox Code Playgroud)

  • 您知道自己刚刚发布了重复的答案,对吗? (2认同)