如何将字符串中的字母转换为小写,Python
我想写一个函数,把大写字母变成小写字母。
我在想可以这样做:
if x in caps
这里的caps是一个包含所有大写字母的列表。如果我能找到这个字母在列表中的位置,就可以把它替换成小写字母。
我该怎么做呢?
谢谢。
4 个回答
1
假设这不是一个学术性的问题,你可以使用标准的字符串小写方法。
x.lower()
如果这是一个练习题,你可以把字符转换成整数,检查它是否在ASCII大写字母的范围内。如果是的话,就加32来转换成小写字母。当然,这种方法只适用于ASCII字母。
x = chr(ord(x)+32) if ord(x) > 64 and ord(x) < 91 else x
除此之外,我也不知道该说什么,库的文档在这里:http://docs.python.org/library/stdtypes.html
另外,值得注意的是,实际上并没有字符类型,只有数字和字符串。当你在字符串中处理一个字符时,它实际上是一个长度为1的字符串。而且,别忘了字符串是不可变的。
1
如果你只是想把字符串变成小写,可以试试:
>>> import string
>>> myString = "abcDEfGHiJ"
>>> myString.lower()
'abcdefghij'
如果你想找到每个小写字母的位置(不管出于什么原因):
>>> [pos for pos, let in enumerate(myString) if 65 <= ord(let) <= 90]
[3, 4, 6, 7, 9]
6
为什么不直接用内置的“lower”函数呢?
a = 'aBcDeFg'
print a.lower() # abcdefg
如果这样不行,你可以尝试逐个字符处理,然后使用ord和chr函数:
"".join(
# if i is between A and Z change it to between a and z
[chr(ord(i)+32) if 65<= ord(i) <= 90
# otherwise leave it as is
else i for i in a])