簡體   English   中英

Python:如果單詞包含數字

[英]Python: if a word contains a digit

我正在編寫一個函數,該函數將單詞作為參數並查看每個字符,如果單詞中有數字,它將返回單詞

這是我要迭代的字符串,“讓我們看看pg11”。 我想查看每個單詞中的每個字符,如果單詞中有一個數字,我想按原樣返回單詞。

import string

def containsDigit(word):

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

為了使您的代碼正常工作,請使用in關鍵字(它將檢查項目是否在序列中),在if語句之后添加一個冒號,然后對return語句進行縮進。

import string

def containsDigit(word):

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

為什么不使用Regex?

>>> 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'

您缺少一個冒號:

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

通常,當您想知道“某物”是否包含“ something_else”集時可能有用。

digits = set('0123456789')

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

print containsDigit('hello')

如果您拼命想使用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。它重新開始運行,直到最終到達字符串末尾。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM