如何在python中删除仅包含数字的单词?

时间:2016-10-13 11:56:15

标签: python regex string

我在Python中有一些由数字和字母组成的文本。像这样:

s = "12 word word2"

从字符串s中,我想删除包含仅数字

的所有字词

所以我希望结果是

s = "word word2"

这是我的正则表达式,但它适用于字母表,即它用空格替换每个字母表。

re.sub('[\ 0-9\ ]+', ' ', line)

有人可以帮我告诉我什么是错的吗?此外,还有一种比正则表达式更有效的方法吗?

谢谢!

3 个答案:

答案 0 :(得分:6)

根据你是否需要保留空格,使用正则表达式可能有点过分:

s = "12 word word2"
s2 = ' '.join(word for word in s.split() if not word.isdigit())
# 'word word2'

答案 1 :(得分:4)

您可以使用此正则表达式:

>>> s = "12 word word2"
>>> print re.sub(r'\b[0-9]+\b\s*', '', s)
word word2

\b用于字边界,\s*将删除数字后的0或更多空格。

答案 2 :(得分:1)

不使用任何外部库,您可以这样做:

stringToFormat = "12 word word2"
words = ""
for word in stringToFormat.split(" "):
    try:
        int(word)
    except ValueError:
        words += "{} ".format(word)
print(words)