如何将字符串中的字母转换为小写,Python

0 投票
4 回答
605 浏览
提问于 2025-04-16 22:56

我想写一个函数,把大写字母变成小写字母。

我在想可以这样做:
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])

撰写回答