从 Python 中的字符串中去除数字
Strip Numbers From String in Python
有没有一种有效的方法可以从 python 中的字符串中删除数字?使用 nltk 或 base python?
谢谢,
本
是的,您可以为此使用正则表达式:
import re
output = re.sub(r'\d+', '', '123hello 456world')
print output # 'hello world'
str.translate
应该是有效率的。
In [7]: 'hello467'.translate(None, '0123456789')
Out[7]: 'hello'
将 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
重新尝试
import re
my_str = '123hello 456world'
output = re.sub('[0-9]+', '', my_str)
这是一个使用 str.join()
、str.isnumeric()
的方法,以及一个在 3.x 中有效的生成器表达式:
>>> my_str = '123Hello, World!4567'
>>> output = ''.join(c for c in my_str if not c.isnumeric())
>>> print(output)
Hello, World!
>>>
这也适用于 2.x,如果您使用 unicode 字符串:
>>> my_str = u'123Hello, World!4567'
>>> output = ''.join(c for c in my_str if not c.isnumeric())
>>> print(output)
Hello, World!
>>>
嗯。放一个回形针,我们就会有 MacGyver.
的一集
更新
我知道这已作为副本关闭,但这里有一种方法适用于 Python 2 和 Python 3:
>>> my_str = '123Hello, World!4567'
>>> output = ''.join(map(lambda c: '' if c in '0123456789' else c, my_str))
>>> print(output)
Hello, World!
>>>
有没有一种有效的方法可以从 python 中的字符串中删除数字?使用 nltk 或 base python?
谢谢, 本
是的,您可以为此使用正则表达式:
import re
output = re.sub(r'\d+', '', '123hello 456world')
print output # 'hello world'
str.translate
应该是有效率的。
In [7]: 'hello467'.translate(None, '0123456789')
Out[7]: 'hello'
将 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
重新尝试
import re
my_str = '123hello 456world'
output = re.sub('[0-9]+', '', my_str)
这是一个使用 str.join()
、str.isnumeric()
的方法,以及一个在 3.x 中有效的生成器表达式:
>>> my_str = '123Hello, World!4567'
>>> output = ''.join(c for c in my_str if not c.isnumeric())
>>> print(output)
Hello, World!
>>>
这也适用于 2.x,如果您使用 unicode 字符串:
>>> my_str = u'123Hello, World!4567'
>>> output = ''.join(c for c in my_str if not c.isnumeric())
>>> print(output)
Hello, World!
>>>
嗯。放一个回形针,我们就会有 MacGyver.
的一集更新
我知道这已作为副本关闭,但这里有一种方法适用于 Python 2 和 Python 3:
>>> my_str = '123Hello, World!4567'
>>> output = ''.join(map(lambda c: '' if c in '0123456789' else c, my_str))
>>> print(output)
Hello, World!
>>>