2012-10-17 21 views
0

好的,我沒有真正得到我正在尋找的答案,所以我會嘗試對此進行重新說明。我需要知道是否有一個函數檢測字符串中的小寫字母。說我開始寫這個程序:如何在Python 3.2中檢測小寫字母?

s = input('Type a word') 

會有一個函數,讓我檢測字符串s中的小寫字母?可能最終將這些字母分配給不同的變量,或者只是打印小寫字母或小寫字母數。

雖然這些將是我想要做的,但我最關心如何檢測小寫字母的存在。最簡單的方法是受歡迎的,我只是在一門Python入門課程中,所以我的老師在參加中期課程時不想看到複雜的解決方案。謝謝您的幫助!

+2

有你有是否有機會重讀'str'文檔呢? –

+4

'filter(str.islower,'MarMaLadE')'? – Blender

+0

你需要支持非ASCII字母嗎?如果解決方案將Unicode代碼點和用戶percieved字符相同,例如,如果某些字母丟失了區分符號,您是否關心它? – jfs

回答

0

希望這會有所幫助,請記住,蟒蛇是謹慎的縮進。這不是一個很好的解決方案,但它的工作原理。

def doWhatYouWantToDo(input): 
newString = "" 
alphabet = "abcdefghijklmnopqrstuvwxyz" 
for letter in input: 
    if letter in alphabet: 
    newString += letter 
return newString 

yourString = 'MarMaLadE' 
print doWhatYouWantToDo(yourString) 
print len(doWhatYouWantToDo(yourString) 
1

使用正則表達式可能是最簡單的方法:

# Python 3 version 

import re 

txt = 'MarMaLadE' 

# Replace uppercase with "" - an empty string 
ltxt,n = re.subn(r'[A-Z]', "", txt) 

print("lower case letters:"," ".join(set(ltxt))) 
print("number of lc letters:", n) 

採用set刪除重複的小寫字母,你可能不希望出現這種情況。你可能也想考慮哪些字符是大寫的,是否足夠?另請參閱re.LOCALE標誌。

0

有許多方法,這裏有一些人:

1-使用預定義功能character.islower():

>>> c = 'a' 
>>> print(c.islower()) #this prints True 

2-使用ord()函數來檢查是否信的ASCII碼是在小寫字符的ASCII碼的範圍:檢查是否信等於它

>>> c = 'a' 
>>> print(ord(c) in range(97,123)) #this will print True 

-3-是小寫:

>>> c = 'a' 
>>> print(c.lower()==c) #this will print True 

但事實可能並非是所有的,你可以找到你自己的方式,如果你不喜歡這些的:D。

最後,讓我們開始檢測:

d = str(input('enter a string : ')) 
lowers = [c for c in d if c.islower()] #here i used islower() because it's the shortest one, using this list comprehension is the most efficient way of doing this