检测字符串中的数字

Jam*_*mes 10 python

value = 'ad.41.bd'

if len(value) == len(value.strip({0,1,2,3,4,5,6,7,8,9})):
    # no numbers
else:
    # numbers present
Run Code Online (Sandbox Code Playgroud)

有一种更简洁的方法可以在Python中检测字符串中的数字吗?

Mar*_*cin 14

那这个呢?

import re
if not re.search('\d+', value):
    # no numbers
else:
    # numbers present
Run Code Online (Sandbox Code Playgroud)


rob*_*ing 8

>>> value="ab3asdf"
>>> any(c.isdigit() for c in value)
True
>>> value="asf"
>>> any(c.isdigit() for c in value)
False




>>> value = 'ad.41.bd'
>>> any(map(lambda c:c.isdigit(),value))
True
Run Code Online (Sandbox Code Playgroud)

编辑:

>>> value="1"+"a"*10**6
>>> any(map(lambda c:c.isdigit(),value))
True
>>> from itertools import imap
>>> any(imap(lambda c:c.isdigit(),value))
True
Run Code Online (Sandbox Code Playgroud)

地图花了1秒(在旧的python上)imap是即时的,因为imap返回一个生成器.通常在现实世界中注意,数字在文件名末尾的概率较高.