我想制作一个不会大写字母的函数。
我以为我能做到
if x in caps
cap是所有大写字母的列表,我让它返回列表中该字母所在的位置,我可以用小写替换它。
我该怎么做?
感谢。
答案 0 :(得分:6)
为什么不使用内置的“低级”
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])
答案 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]
答案 2 :(得分:1)
假设这不是某种学术问题,您可以使用标准字符串lower()方法。
x.lower()
如果是练习,你可以将字符翻转为int,检查它是否在ASCII大写字母范围内,如果是,则添加32以进行转换。这当然只适用于ASCII字母。
x = chr(ord(x)+32)如果ord(x)> 64和ord(x)&lt; 91其他x
不确定除了图书馆文档之外还有什么可说的:http://docs.python.org/library/stdtypes.html
另外,值得注意的是,当你在一个字符串中使用一个字符时,确实没有字符类型,只有数字和字符串,它实际上是一个长度为1的字符串。另外,不要忘记字符串是不可变的
答案 3 :(得分:0)
Python有一个函数 - str.lower()。 http://docs.python.org/library/stdtypes.html#str.lower
如果您真的想自己编写函数,Python的字符串库有一个ASCII小写字母列表,但您可以利用ASCII字符实际上只是int值的事实,并为每个值为65的字母添加32和90(65 = A和90 = Z中的Z,但Z和a之间有一些标点值。)无需解析列表!