簡體   English   中英

僅當該列表中的字母形成時才檢查參數

[英]check the arguments only if the letters in that list are formed

我有三個參數,所有參數都必須由字母組成,例如 john、car、yoga。 如果參數包含任何數字或符號,我需要打印錯誤,您只需要使用字母。 我想我需要創建一個列表並僅在該列表中的字母形成時檢查參數。 有人可以幫我在 python 中做到這一點嗎?

我想即使它有一個帶有數字的字符串,您也希望返回 false 試試下面的代碼。

布爾返回函數

 def isstring(*args):
        for i in range(len(args)):
            if any(char.isdigit() for char in args[i]):
                 return False
        return True

    print(isstring("nikhil","kone1ru"))

字符串返回函數

def errorstring(*args):
    for i in range(len(args)):
        if any(char.isdigit() for char in args[i]):
            return args[i]
    return None

str = errorstring("nikhil", "kone1ru")
if str is None:
    print("No string contains number")
else:
    print("String with number:"+str)

通常,如果您只想知道給定的字符串是否僅包含字母(沒有空格、標點符號、數字等),您可以簡單地在字符串上使用 Python 的.isalpha()函數。 例如, 'john'.isalpha()返回True ,但'johnny5'.isalpha()返回False 但是,除非您將字符串描述為 Unicode,否則這對於帶有 Unicode 字母的內容將失敗。 例如, 'Köln'.isalpha()返回False ,但u'Köln'.isalpha()返回True 不過,我認為這在 Python 3.x 和 Python 2.x 中可能有所不同。

我看到這里使用的另一個答案isdigit() ,但這會給帶有非字母數字符號的字符串傳遞,如john+doedoe,john

如果您有一個格式正確的字符串列表,並且當且僅當它們都是嚴格按字母順序排列時您想返回“True”,那么此函數應該可以滿足您的需求:

def check_list(mylist):
    for word in mylist:
        if not word.isalpha():
            return False
    return True

或等效但更短的方法:

def check_list(mylist):
    return not False in [word.isalpha() for word in mylist]

在各種字符串的列表上運行它:

#!/usr/bin/python
# -*- coding: latin-1 -*-

def check_list(mylist):
    return not False in [word.isalpha() for word in mylist]

mylist1 = ['Berlin', u'Köln', u'Munich']
print("My strings: %s" % mylist1)
print("All of my strings are alphabetic strings:")
print check_list(mylist1)

mylist2 = ['Berlin', u'Köln', u'Munich 2018']
print("My other strings: %s" % mylist2)
print("All of these strings are alphabetic strings:")
print check_list(mylist2)

# Output is:
#  My strings: ['Berlin', u'K\xf6ln', u'Munich']
#  All of my strings are alphabetic strings:
#  True
#  My other strings: ['Berlin', u'K\xf6ln', u'Munich 2018']
#  All of these strings are alphabetic strings:
#  False

棘手的部分是你說你希望你的列表是sys.arg (或者更具體地說,子列表sys.arg[1:] )。 挑戰可能是將其放入適當的可識別字符串列表中,而不會出現煩人的UnicodeDecodeError錯誤。 但是一旦你弄清楚了, .isalpha()應該像這里一樣工作。

暫無
暫無

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

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