我需要知道是否有一个函数可以检测字符串中的小写字母。假设我开始编写这个程序:
s = input('Type a word')
是否有一个函数可以让我检测字符串 s 中的小写字母?可能最终将这些字母分配给不同的变量,或者只打印小写字母或小写字母的数量。
虽然这些是我想做的,但我最感兴趣的是如何检测小写字母的存在。最简单的方法将受到欢迎。
要检查字符是否为小写,请islower
使用str
. 这个简单的命令式程序打印字符串中的所有小写字母:
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'
有两种不同的方法可以查找小写字符:
用于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']
有很多方法,这里有一些:
使用预定义的str
方法islower()
:
>>> c = 'a'
>>> c.islower()
True
使用ord()
函数检查字母的ASCII码是否在小写字符的ASCII码范围内:
>>> c = 'a'
>>> ord(c) in range(97, 123)
True
检查字母是否等于它的小写形式:
>>> c = 'a'
>>> c.lower() == c
True
检查字母是否在模块列表ascii_lowercase
中string
:
>>> from string import ascii_lowercase
>>> c = 'a'
>>> c in ascii_lowercase
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 and most-reliable
# one (being a predefined function), using this list comprehension
# is (probably) the most efficient way of doing this
您应该使用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
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
如果您不想使用这些库并想要简单的答案,那么代码如下:
def swap_alpha(test_string):
new_string = ""
for i in test_string:
if i.upper() in test_string:
new_string += i.lower()
elif i.lower():
new_string += i.upper()
else:
return "invalid "
return new_string
user_string = input("enter the string:")
updated = swap_alpha(user_string)
print(updated)