2011-08-05 38 views
0

我想創建一個函數,用於取消大寫字母的大寫。如何在字符串中創建字母lowercas,Python

我想我可以做
if x in caps
其中帽是所有的大寫字母的列表,我已經將其返回的位置在那封信是在列表中,我可以把它用小寫字母代替本身。

我該怎麼做?

謝謝。

+0

誤導性標題 – warvariuc

+0

@warvariuc這是我以爲我會用的解決方案。 '如果x in caps',然後找到它的位置,並將其引用到另一個列表中,並將其替換爲那裏相應位置中的字母。 – JShoe

+1

更改標題以反映您的問題,而不是解決方案 – warvariuc

回答

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]) 
+0

就是這樣 - 我頭腦中想到的第一個想法:)似乎很明顯 - 可能他不能解釋他真正想要的東西嗎? –

+0

我不知道更低,謝謝1 – JShoe

0

Python有一個功能這 - str.lower()。 http://docs.python.org/library/stdtypes.html#str.lower

如果你真的想自己寫的功能,Python的字符串庫有ASCII小寫字母列表,但你可以利用一個事實,即ASCII字符其實只是詮釋值,並添加32到具有價值的每個字母在65到90之間(65 = A和90 = Z,但在Z和a之間有一些標點符號)。無需解析列表!

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] 
1

假設這是不是有些這種學術問題,你會使用標準的字符串lower()方法。

x.lower()

如果它是一個鍛鍊,可以將角色翻轉爲int,檢查它是否在ASCII大寫字母的範圍,如果再加入32將其轉換。這當然只適用於ASCII字母。

X = CHR(ORD(X)+32)如果ORD(X)> 64和ord(x)的< 91否則x

不知道還有什麼可以說比庫文檔是在這裏等: http://docs.python.org/library/stdtypes.html

此外,值得注意的是不是真的有一個字符類型,只有數字和字符串,當你具有一個char的字符串它的真正長度爲1同樣的字符串的工作,不要忘記字符串是不可改變的。

相關問題