我給出了單個字符或字符串,並使用Python。Unicode大小寫轉換
如何根據Unicode提出的標準(標準和特殊情況映射)找出特定字符是否具有小寫等價物?
如何根據Unicode提出的標準(標準和特殊情況映射)找出字符串是否有一個或多個具有小寫字母的字符?
我給出了單個字符或字符串,並使用Python。Unicode大小寫轉換
如何根據Unicode提出的標準(標準和特殊情況映射)找出特定字符是否具有小寫等價物?
如何根據Unicode提出的標準(標準和特殊情況映射)找出字符串是否有一個或多個具有小寫字母的字符?
def haslower(unicodechar):
return unicodechar != unicodechar.lower()
def anylower(unicodestring):
return any(haslower(c) for c in unicodestring)
這隻會在儘可能的Python版本您使用的正常工作是否正確實施過程中的每統一標準.lower()
方法。此外,我假設您不考慮(例如,u'a'
)「具有小寫等價物」(當然,它具有大寫)。如果你的意思是不同的,考慮
def changescase(uc):
return uc != uc.lower() or uc != uc.upper()
(我已經改名爲參數uc
以避免過多的線路長度;-) - 如果這就是你想要什麼,我建議不命名功能來講「小寫等價「,因爲這肯定會讓你的代碼的讀者/維護者感到困惑!)
@Albert,你似乎過分關心大小寫轉換的細節,當你還沒有理清(也沒有解釋給回答者)你真正想做的事情。
===您以前的解釋(在評論我的回答this question)嘗試===
@約翰:嗯,我其實做一個API,我的網絡服務。我的web服務接受一個映射到我的數據庫中的特定記錄的密鑰。密鑰區分大小寫,密鑰可以由任何unicode字符組成。所以爲了規範所有的輸入,我會將所有的關鍵查詢轉換成小寫(如果它們有大寫的等價物)。其結果是當我創建記錄鍵(我的用戶可以自定義)時,我無法接受任何可以通過toLower()函數轉換爲小寫等效的大寫字符。所以我試圖爲此做一個過濾器。有什麼建議麼?
===我在回答評論===
@Albert:如果你的鑰匙是大小寫敏感的,你爲什麼正常化他們??? 「用戶可以自定義的記錄鍵」意味着什麼? 「任何unicode char」vs「不能接受任何大寫字符」??? 按字面回答你的問題:當c.lower()!= c時,你不能接受字符c,這意味着如果key.lower()!= key,你不能接受任何密鑰。我認爲你應該開始一個新的問題,用實例來解釋你正在嘗試做什麼。
...你肯定問過一個新問題(實際上是2個問題),但你沒有解釋任何東西。這個「新」問題非常新,以至於@Alex Martelli的答案與我上面強調的評論基本相同。
我認爲你應該開始一個新問題,與新內容,用實例解釋你正在嘗試做什麼。
好的。我將整理我正在嘗試做的事情。謝謝! – Albert 2010-08-21 14:08:49
我從來沒有想到.lower(和.upper)也適用於重音字符。 – 2010-08-21 04:52:32
謝謝。我在GAE中運行我的應用程序,所以它是Python 2.5.2。我問了另一個問題,以防萬一你想回答它(其他人也可以看到)。 http://stackoverflow.com/questions/3536397/does-python-version-2-5-2-follow-unicode-standards-for-lower-and-upper-functi – Albert 2010-08-21 05:06:16