I'm looking for a way to check if a string defines a color since my program relies on users inputting colors and it breaks when they enter a wrong color. How can I do this? Here are some examples:
check_color("blue") > True
check_color("deep sky blue") > True
check_color("test") > False
check_color("#708090") > True
Here is the way to check if the string defines a color using matplotlib:
>>> from matplotlib.colors import is_color_like
>>>
>>> is_color_like('red')
True
>>> is_color_like('re')
False
>>> is_color_like(0.5)
False
>>> is_color_like('0.5')
True
>>> is_color_like(None)
False
>>>
>>> matplotlib.colors.__file__
'/usr/lib/python2.7/site-packages/matplotlib/colors.py'
In the source code of the matplotlib.colors module it's written:
The module also provides functions for checking whether an object can be interpreted as a color (:func:
is_color_like
), for converting such an object to an RGBA tuple (:func:to_rgba
) or to an HTML-like hex string in the#rrggbb
format (:func:to_hex
), and a sequence of colors to an(n, 4)
RGBA array (:func:to_rgba_array
). Caching is used for efficiency.
One possible way might be is to use colour
package. If you do not have it install use command pip install colour
. Then, you can use following:
from colour import Color
def check_color(color):
try:
# Converting 'deep sky blue' to 'deepskyblue'
color = color.replace(" ", "")
Color(color)
# if everything goes fine then return True
return True
except ValueError: # The color code was not found
return False
check_color("blue")
check_color("deep sky blue")
check_color("test")
check_color("#708090")
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With