如何从字符串中删除数字?

3

我有一个任务,需要将用户输入的名字和姓氏倒序打印出来。这个功能已经可以正常工作了,但是我尝试使用import re和re.sub来删除用户错误输入的任何数字,但是没有成功。

以下是代码:

import re

firstname = input("enter first name:")
lastname = input("enter last name:")
firstname = re.sub('1-9', '', firstname)
lastname = re.sub('1-9', '', lastname)
print(lastname, firstname)

这里的问题是什么?

re.sub('[0-9]', '', firstname)re.sub('[0-9]', '', lastname)就可以解决问题了,你需要将其包裹在[]中。 - Cow
1
“它只是不工作”一点也不有帮助。问题出在哪里?程序崩溃了吗?请提供跟踪日志。输出结果不如预期?请发布样例输入、输出和预期输出。详见[ask]。 - AcK
我刚才说了,我是新来的stackoverflow,如果我第一次问得有点不对,没有什么大不了的。 而且我问得很正确,因为我并没有遇到任何问题,也没有崩溃或者其他什么,只是在没有使用[]的情况下第一次没有起作用。 - newtopythonXD
@newtopythonXD 没问题,你可以参观一下这个网站:https://stackoverflow.com/tour。友情提醒:你忘记接受答案了。同时,你也可以删除你发布的答案。 - Abhyuday Vaish
@AbhyudayVaish请停止向OP推销您的答案(或任何答案)。他们没有义务这样做。 - Tomerikoo
2个回答

2

模式'1-9'将匹配字符串1-9。如果您想指定一组字符,则应使用[]括起来:

print(re.sub('[1-9]', '', 'Name 1with 12numbers'))
# >> Name with numbers

0

您可以使用\d+来删除数字:

import re
firstname = input("enter first name:")
lastname = input("enter last name:")
firstname = re.sub('\d+', '', firstname)
lastname = re.sub('\d+', '', lastname)
print(lastname, firstname)

或者使用[0-9]

import re
firstname = input("enter first name:")
lastname = input("enter last name:")
firstname = re.sub('[0-9]', '', firstname)
lastname = re.sub('[0-9]', '', lastname)
print(lastname, firstname)

输出:

enter first name:Hello12
enter last name:World23
World Hello

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接