我发现的大多数问题都偏向于这样一个事实,即他们在数字中寻找字母,而我在我想要的无数字符串中寻找数字。 我需要输入一个字符串并检查它是否包含任何数字,以及它是否拒绝它。
函数isdigit()仅当所有字符都是数字时才返回True。我只是想看看用户是否输入了一个数字,比如“我有一只狗”之类的句子。
什么好主意吗?
我发现的大多数问题都偏向于这样一个事实,即他们在数字中寻找字母,而我在我想要的无数字符串中寻找数字。 我需要输入一个字符串并检查它是否包含任何数字,以及它是否拒绝它。
函数isdigit()仅当所有字符都是数字时才返回True。我只是想看看用户是否输入了一个数字,比如“我有一只狗”之类的句子。
什么好主意吗?
当前回答
我很惊讶没有人使用python操作符。使用它的工作原理如下:
foo = '1dfss3sw235fsf7s'
bar = 'lorem ipsum sit dolor amet'
def contains_number(string):
for i in range(10):
if str(i) in list(string):
return True
return False
print(contains_number(foo)) #True
print(contains_number(bar)) #False
或者我们可以使用函数isdigit():
foo = '1dfss3sw235fsf7s'
bar = 'lorem ipsum sit dolor amet'
def contains_number(string):
for i in list(string):
if i.isdigit():
return True
return False
print(contains_number(foo)) #True
print(contains_number(bar)) #False
这些函数基本上只是将s转换为一个列表,并检查列表中是否包含数字。如果是,则返回True,如果不是,则返回False。
其他回答
这也会起作用。
if any(i.isdigit() for i in s):
print("True")
可以对String中的每个字符应用isdigit()函数。或者你可以使用正则表达式。
我还发现我如何在Python中找到一个字符串中的数字?用非常合适的方式返回数字。下面的答案来自于那个问题的答案。
number = re.search(r'\d+', yourString).group()
另外:
number = filter(str.isdigit, yourString)
有关更多信息,请查看regex文档:http://docs.python.org/2/library/re.html
编辑:这返回实际的数字,而不是布尔值,所以上面的答案更适合你的情况
第一个方法将返回第一个数字和随后的连续数字。因此,1.56将返回为1。10,000将返回为10。0207-100-1000将作为0207返回。
第二种方法行不通。
要提取所有数字,点和逗号,并且不丢失非连续的数字,使用:
re.sub('[^\d.,]' , '', yourString)
alp_num = [x for x in string.split() if x.isalnum() and re.search(r'\d',x) and
re.search(r'[a-z]',x)]
print(alp_num)
这将返回所有包含字母和数字的字符串。Isalpha()返回全数字或全字符的字符串。
您可以使用NLTK方法。
这将在文本中找到'1'和'One':
import nltk
def existence_of_numeric_data(text):
text=nltk.word_tokenize(text)
pos = nltk.pos_tag(text)
count = 0
for i in range(len(pos)):
word , pos_tag = pos[i]
if pos_tag == 'CD':
return True
return False
existence_of_numeric_data('We are going out. Just five you and me.')
你可以使用any和str.isdigit的组合:
def num_there(s):
return any(i.isdigit() for i in s)
如果字符串中有数字,函数将返回True,否则返回False。
演示:
>>> king = 'I shall have 3 cakes'
>>> num_there(king)
True
>>> servant = 'I do not have any cakes'
>>> num_there(servant)
False