2012-10-17 15 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