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

如何删除python中仅包含数字的单词?,python,regex,string,Python,Regex,String,我有一些Python文本,由数字和字母组成。大概是这样的: s = "12 word word2" 从字符串s中,我想删除所有只包含数字的单词 所以我希望结果是 s = "word word2" 这是一个正则表达式,但它在字母表上工作,即用空格替换每个字母表 re.sub('[\ 0-9\ ]+', ' ', line) 有人能告诉我出了什么事吗?还有,有没有比正则表达式更省时的方法呢 谢谢 您可以使用此正则表达式: >>> s = "12 word word2" >

我有一些Python文本,由数字和字母组成。大概是这样的:

s = "12 word word2"
从字符串s中,我想删除所有只包含数字的单词

所以我希望结果是

s = "word word2"
这是一个正则表达式,但它在字母表上工作,即用空格替换每个字母表

re.sub('[\ 0-9\ ]+', ' ', line)
有人能告诉我出了什么事吗?还有,有没有比正则表达式更省时的方法呢


谢谢

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

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

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

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

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

不使用任何外部库,您可以执行以下操作:

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

谢谢你的回答。是否可以修改正则表达式以删除所有标点符号/特殊符号,如下所示?re.sub(r'\b[!~`,/]+\b\s*,'',s)确定您可以使用:
re.sub(r'\b[0-9]+\b\W*,'',s)
,因为
\W
匹配空格或任何其他非单词字符。