Python: How to check if a unicode string contains a cased character?
Question: I'm doing a filter wherein I check if a unicode (utf-8 encoding) string
contains no uppercase characters (in all languages). It's fine with me if the
string doesn't contain any cased character at all.

For example: 'Hello!' will not pass the filter, but "!" should pass the
filter, since "!" is not a cased character.

I planned to use the islower() method, but in the example above, "!".islower()
will return False.

According to the Python Docs, "The python unicode method islower() returns
True if the unicode string's cased characters are all lowercase and the string
contained at least one cased character, otherwise, it returns False."

Since the method also returns False when the string doesn't contain any cased
character, ie. "!", I want to do check if the string contains any cased
character at all.

Something like this....

    
    
    string = unicode("!@#$%^", 'utf-8')
    
    #check first if it contains cased characters
    if not contains_cased(string):
         return True
    
    return string.islower():
    

Any suggestions for a contains_cased() function?

Or probably a different implementation approach?

Thanks!


Answer: 
    import unicodedata as ud
    
    def contains_cased(u):
      return any(ud.category(c)[0] == 'L' for c in u)
    

