Say I have a string that can contain different characters:
e.g. word = "UPPER£CASe"
How would I test the string to see if all the charac
You could use regular expressions:
all_uppercase = bool(re.match(r'[A-Z]+$', word))
You should use str.isupper() and str.isalpha() function.
Eg.
is_all_uppercase = word.isupper() and word.isalpha()
According to the docs:
S.isupper() -> bool
Return
True
if all cased characters inS
are uppercase and there is at least one cased character inS
,False
otherwise.
You can alternatively work at the level of characters.
The following function may be useful not only for words but also for phrases:
def up(string):
upper=[ch for ch in string if ch.isupper() or ch.isspace()]
if len(upper)==len(string):
print('all upper')
else:
print("some character(s) not upper")
strings=['UPPERCAS!', 'UPPERCASe', 'UPPERCASE', 'MORE UPPERCASES']
for s in strings:
up(s)
Out: some character(s) not upper
Out: some character(s) not upper
Out: all upper
Out: all upper
Yash Mehrotra has the best answer for that problem, but if you'd also like to know how to check that without the methods, for purely educational reasons:
import string
def is_all_uppercase(a_str):
for c in a_str:
if c not in string.ascii_uppercase:
return False
return True
Here you can find a very useful way to check if there's at least one upper or lower letter in a string
Here's a brief example of what I found in this link:
print(any(l.isupper() for l in palabra))
https://www.w3resource.com/python-exercises/python-basic-exercise-128.php