Unicode case conversion
我被赋予了一个字符或一个字符串,并且正在使用python。
根据Unicode提出的标准(标准和特殊情况映射),如何确定特定字符是否具有小写等价物?
根据Unicode提出的标准(标准和特殊情况映射),如何确定字符串中是否有一个或多个字符具有小写等价物?
1 2 3 4 5 | def haslower(unicodechar): return unicodechar != unicodechar.lower() def anylower(unicodestring): return any(haslower(c) for c in unicodestring) |
当然,这只能在您使用的Python版本按照Unicode标准正确实现
1 2 | def changescase(uc): return uc != uc.lower() or uc != uc.upper() |
(我已经将参数重命名为
@阿尔伯特,当你还没有弄清楚(也没有向回答者解释)你真正想做什么的时候,你似乎过于关注案例转换的细节。
===你以前解释的尝试(评论我对这个问题的回答)===
@约翰:嗯,我正在为我的网络服务制作一个API。我的WebService接受一个映射到我数据库中特定记录的键。该键区分大小写,可以由任何Unicode字符组成。因此,为了规范化所有输入,我将把所有键查询转换为小写(如果它们具有大写等价物)。这样做的结果是,当我创建记录键(我的用户可以自定义)时,我不能接受任何大写字符,这些字符可以通过tolower()函数转换为小写等效字符。所以我要做一个过滤器。有什么建议吗?
===和我的回复评论===
@阿尔伯特:如果你的钥匙是区分大小写的,你为什么要使它们正常化???""记录用户可以自定义的密钥"是什么意思???"任何Unicode字符"vs"都不能接受任何大写字符????从字面上回答你的问题:当c.lower()时,看起来你不能接受字符c!=c,这意味着如果key.lower()不能接受任何key!=密钥。我认为你应该开始一个新的问题,用例子准确地解释你想做什么。
…你当然问了一个新问题(事实上有两个),但你什么都没解释。这个"新"问题太新了,以至于@alex martelli的回答基本上与我上面强调的评论相同。
我认为你应该用新的内容开始一个新的问题,用例子确切地解释你想做什么。