如何从字符串中仅打印整数/数字

3

你好,我对编程和Python还比较新,有一个问题想请教。

如果我想从一个字符串中打印或返回仅数字,应该怎么做?

例如:

"Hu765adjH665Sdjda"

输出:

"765665"
5个回答

3
您可以使用 re.sub 函数来删除任何非数字字符。
import re

string = "Hu765adjH665Sdjda"
string = re.sub('[^0-9]', '', string)
print string
#'765665'

re.sub 从左往右扫描字符串。每当它找到一个不是数字的字符时,就会将其替换为空字符串(这与实际上将其删除相同)。


嘿,感谢您的及时回复!您能解释一下这里发生了什么吗?谢谢!:D - user2891763
这个能用于字母吗? - user2891763
如果我只想要字母而不是数字...那么我可以将它改为[^a-z]...这样就可以工作了吗? - user2891763
哦,还有一个问题......抱歉打扰你......我该如何使它适用于大写和小写字母? - user2891763

2
>>> s = "Hu765adjH665Sdjda"
>>> ''.join(c for c in s if c in '0123456789')
'765665'

1
a='a345g5'



for i in a:
    if int(i.isnumeric()):
        print(i,end=' ')

0

尝试过滤器

>>> str='1qaz2wsx3edc4rfv5tgb6yhn7ujm8ik9ol'
>>> print str
1qaz2wsx3edc4rfv5tgb6yhn7ujm8ik9ol
>>> filter(lambda x:x>='0' and x<='9', str)
'123456789'

嗨,谢谢你的及时回答!!还有一件事,你能解释一下这里发生了什么吗? - user2891763
哦,我遇到了这个错误:<filter object at 0x00000000031FBB00>。 - user2891763
1
不要使用像 str 这样的名称,因为它们会覆盖像 str 这样的函数。 - dansalmo
非常简单,filter 接受一个谓词和一组输入,并仅返回谓词评估为 true 的那些输入。 - e271p314
这个“lambda”函数是做什么的? - user2891763
在这里看一下:http://docs.python.org/2/reference/expressions.html#lambda。Lambda表达式只是函数的语法糖,它可以使代码更简洁,但有时会降低可读性,特别是当滥用时。 - e271p314

0
sentence = "Hu765adjH665Sdjda"

for number in sentence:
    if number in "0123456789":
        print(number)

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