We can change the case of characters in Python with the lower and upper methods.
String casing. More powerful methods such as capitalize and title() also exist. We cover the basic methods (upper and lower) first, and then explore isupper and islower.
An example. Often we need to uppercase (or lowercase) strings. With the upper and lower methods, we apply the needed transformations. These methods do not affect non-letter characters.
Tip: We never need to call upper() on a string that is already uppercased. Please see the isupper and islower methods.
Based on: Python 3 Python program that uses upper, lower value = "Tree" # Uppercase the string. x = value.upper() print(x) # Lowercase the string. y = value.lower() print(y) Output TREE tree
Isupper, islower. Is a string already uppercase or lowercase? We can tell this easily with the isupper and islower methods. These two methods are often used with if-statements.
Also: Please see the performance test. Is lower is used to improve speed. With it, we can avoid copying strings.
Python program that uses isupper, islower value1 = "ABC123" value2 = "abc123" # Method can be used in an if-statement. if value1.isupper(): print(1) # Call methods on both strings. print(value1.isupper()) print(value2.isupper()) print(value1.islower()) print(value2.islower()) Output 1 True False False True
Capitalize. This method affects only the first letter in a string. It changes it to be uppercase. If the first character is not a letter, nothing happens.
Here: Please notice that the variable "s" is assigned to the result of capitalize().
Tip: This means capitalize() does not change the existing string in-place. It creates a new copy of the string in memory and returns that.
Python program that uses capitalize # An input string. s = "perls" # Capitalize and assign. s = s.capitalize() print(s) Output Perls
Title. Strings have a title method. This method is not smart. But it does help with many common strings. It capitalizes each word in a string.
Warning: Title will capitalize words that are not supposed to be capitalized, like "of" and "and."
Thus: A custom implementation (not the title method) would be needed if your requirements are more complex.
Python program that uses title string method value = "the unbearable lightness of being" # Convert to title case. result = value.title() print(result) Output The Unbearable Lightness Of Being
Istitle. This is a less-useful method. It scans a string and determines if the string has capital letters for each word. It can be used to avoid calling title() on strings.
Note: As with the title method, istitle will become confused on certain words. It requires all words, even "and" to be capitalized.
Python program that uses istitle value1 = "A Car" value2 = "A car" value3 = "a Car" value4 = "A123" value5 = "a123" # Test istitle method. print(value1.istitle()) print(value2.istitle()) print(value3.istitle()) print(value4.istitle()) print(value5.istitle()) Output True False False True False
Benchmark. The islower method can be used as an optimization. Before calling lower() we can check whether the string is already lowercase.
And: If the string is already lowercased, we can avoid calling lower. This avoids creating a new string.
Caution: If the majority of your strings are not lowercase, this check will slow down a program. The islower method has a cost too.
In the results, we see that the code that checks islower() first is more than twice as fast. This is an unusual data set. It is not real-world data.
However: Many programs add calls to lower just in case. Usually these calls have no effect. This optimization would benefit these programs.
Python program that benchmarks islower, lower import time value = "intuitive" print(time.time()) # Version 1: lower. i = 0 while i < 10000000: v = value.lower() i += 1 print(time.time()) # Version 2: islower and lower. i = 0 while i < 10000000: if not value.islower(): v = value.lower() i += 1 print(time.time()) Output 1384626116.650 1384626122.033 lower(): 5.38 s 1384626124.027 islower() and lower(): 1.99 s
A summary. Text processing often involves normalizing the casing of strings. With the lower method and its friend upper(), we do this.
Testing cases. Performance is improved in many programs by using islower() and isupper(). This reduces work but may introduce complexity.