我需要知道是否有一個函數檢測字符串中的小寫字母。說我開始寫這個程序:如何在Python中檢測小寫字母?
s = input('Type a word')
會有一個函數,讓我檢測字符串s中的小寫字母?可能最終將這些字母分配給不同的變量,或者只是打印小寫字母或小寫字母數。
雖然這些將是我想要做的,但我最關心如何檢測小寫字母的存在。最簡單的方法是受歡迎的,我只是在一門Python入門課程中,所以我的老師在參加中期課程時不想看到複雜的解決方案。謝謝您的幫助!
我需要知道是否有一個函數檢測字符串中的小寫字母。說我開始寫這個程序:如何在Python中檢測小寫字母?
s = input('Type a word')
會有一個函數,讓我檢測字符串s中的小寫字母?可能最終將這些字母分配給不同的變量,或者只是打印小寫字母或小寫字母數。
雖然這些將是我想要做的,但我最關心如何檢測小寫字母的存在。最簡單的方法是受歡迎的,我只是在一門Python入門課程中,所以我的老師在參加中期課程時不想看到複雜的解決方案。謝謝您的幫助!
要檢查字符是否小寫,請使用str
的islower
方法。這個簡單的命令式程序打印所有的小寫字母在你的字符串:
for c in s:
if c.islower():
print c
注意的是Python 3,你應該使用的print(c)
代替print c
。
可能結束了分配這些字母在不同的變量。
要做到這一點,我建議使用列表理解,雖然你可能沒有你的課程涵蓋這個尚未:
>>> s = 'abCd'
>>> lowercase_letters = [c for c in s if c.islower()]
>>> print lowercase_letters
['a', 'b', 'd']
或者讓你可以使用''.join
與發電機的字符串:
>>> lowercase_letters = ''.join(c for c in s if c.islower())
>>> print lowercase_letters
'abd'
import re
s = raw_input('Type a word: ')
slower=''.join(re.findall(r'[a-z]',s))
supper=''.join(re.findall(r'[A-Z]',s))
print slower, supper
打印:
Type a word: A Title of a Book
itleofaook ATB
或者你可以使用一個列表理解/發電機表達式:
slower=''.join(c for c in s if c.islower())
supper=''.join(c for c in s if c.isupper())
print slower, supper
打印:
Type a word: A Title of a Book
itleofaook ATB
有兩種不同的方式,你可以找小寫字符:
使用str.islower()
查找小寫字符。與列表理解相結合,你可以收集所有小寫字母:
lowercase = [c for c in s if c.islower()]
你可以使用正則表達式:
import re
lc = re.compile('[a-z]+')
lowercase = lc.findall(s)
第一個方法返回單個字符的列表,第二返回一個字符列表組:
>>> import re
>>> lc = re.compile('[a-z]+')
>>> lc.findall('AbcDeif')
['bc', 'eif']
您可以使用內置功能any
和發生器。
>>> any(c.islower() for c in 'Word')
True
>>> any(c.islower() for c in 'WORD')
False
*'可能最終將這些字母分配給不同的變量'*。使用'any'將阻止該選項。 –
「......我最關心如何檢測小寫字母的存在。」我認爲我的建議可以是一個答案。 –
您應該使用raw_input
來接受字符串輸入。然後使用islower
方法str
對象。
s = raw_input('Type a word')
l = []
for c in s.strip():
if c.islower():
print c
l.append(c)
print 'Total number of lowercase letters: %d'%(len(l) + 1)
只是做 -
dir(s)
,你會發現islower
和其他屬性str
注意:Python 2.x中的'raw_input()'被Python 3.x中的'input()'替換。這很重要,因爲作者沒有指定他使用的是哪個版本。 – rbaleksandar
有許多方法,這裏有一些人:
使用預定義的函數character.islo WER():
>>> c = 'a'
>>> print(c.islower()) #this prints True
使用ord()函數來檢查所述信的ASCII碼是否處於小寫字符的ASCII碼的範圍:檢查是否
>>> c = 'a'
>>> print(ord(c) in range(97,123)) #this will print True
這封信等於它的小寫:
>>> c = 'a'
>>> print(c.lower()==c) #this will print True
但事實可能並非全部,你CA ñ找到自己的方式,如果你不喜歡這些的: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 and most-reliable one (being a predefined function), using this list comprehension is the most efficient way of doing this
這是什麼添加到其他現有答案? –
上面沒有提到第二種和第三種方法 –
'如果有的話(下以s c。如果c.islower())'檢測至少存在一個小寫字母。 – eumiro
您是使用Python 2.x還是Python 3.x? –
爲什麼upvote錯誤的答案@NoctisSkytower?它應該是'任何(過濾器(str.islower,s))' – stanleyli