我在Python中有一些由数字和字母组成的文本。像这样:
s = "12 word word2"
从字符串s中,我想删除包含仅数字
的所有字词所以我希望结果是
s = "word word2"
这是我的正则表达式,但它适用于字母表,即它用空格替换每个字母表。
re.sub('[\ 0-9\ ]+', ' ', line)
有人可以帮我告诉我什么是错的吗?此外,还有一种比正则表达式更有效的方法吗?
谢谢!
答案 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)