Python:如果一个单词包含一个数字

时间:2013-07-16 16:09:11

标签: python python-3.x

我正在编写一个函数,它将一个单词作为参数,并查看每个字符,如果单词中有数字,它将返回单词

这是我将迭代的字符串 “让我们看看第11页。” 我想看看每个单词中的每个字符,如果单词中有一个数字,我想按照它的方式返回单词。

import string

def containsDigit(word):

    for ch in word:
        if ch == string.digits
        return word

6 个答案:

答案 0 :(得分:8)

if any(ch.isdigit() for ch in word):
    print word, 'contains a digit'

答案 1 :(得分:1)

要使代码工作,请使用in关键字(将检查项目是否在序列中),在if语句后添加冒号,并缩进return语句。

import string

def containsDigit(word):

    for ch in word:
        if ch in string.digits:
            return word

答案 2 :(得分:1)

为什么不使用正则表达式?

>>> import re
>>> word = "super1"
>>> if re.search("\d", word):
...     print("y")
...
y
>>>

所以,在你的函数中,只需:

import re
def containsDigit(word):
    if re.search("\d", word):
        return word
print(containsDigit("super1"))

输出:

'super1'

答案 3 :(得分:0)

你错过了冒号:

for ch in word:
    if ch.isdigit(): #<-- you are missing this colon
        print "%s contains a digit" % word
        return word

答案 4 :(得分:0)

通常当你想知道“某事物”是否包含“something_else”时,设置可能是有用的。

digits = set('0123456789')

def containsDigit(word):  
    if set(word) & digits:  
        return word

print containsDigit('hello')

答案 5 :(得分:0)

如果您非常想使用string模块。这是代码:

import string
def search(raw_string):
    for raw_array in string.digits:
        for listed_digits in raw_array:
            if listed_digits in raw_string:
                return True
    return False

如果我在外壳程序中运行它,则会得到所需的结果。 (如果包含,则为True;否则为False)

>>> search("Give me 2 eggs")
True
>>> search("Sorry, I don't have any eggs.")
False

代码分解

这是代码的工作方式

string.digits是一个字符串。如果我们遍历该字符串,则会得到父字符串的列表,该列表分为几部分。然后,我们得到一个包含字符串中的每个字符的列表,列表中没有。因此,我们在字符串中有每个字符!现在,我们再次遍历它!产生字符串,我们可以看到给定的字符串是否包含数字,因为循环内的每一行代码都需要执行一个步骤,从而更改了我们循环通过的字符串。因此,这意味着每次变量更改时都会执行循环中的单行。所以,当我们到达时;例如5。它再次执行代码,但是循环中的变量现在更改为5。它再次开始运行,直到最终到达字符串的末尾。