from uuid import UUID def validate_uuid4(uuid_string): """ Validate that a UUID string is in fact a valid uuid4. Happily, the uuid module does the actual checking for us. It is vital that the 'version' kwarg be passed to the UUID() call, otherwise any 32-character hex string is considered valid. """ try: val = UUID(uuid_string, version=4) except ValueError: # If it's a value error, then the string # is not a valid hex code for a UUID. return False # If the uuid_string is a valid hex code, # but an invalid uuid4, # the UUID.__init__ will convert it to a # valid uuid4. This is bad for validation purposes. return val.hex == uuid_string if __name__ == '__main__': # Valid uuid, generated by uuid4(): x = '89eb35868a8247a4a911758a62601cf7' print validate_uuid4(x) # Same as above, except for the 17th charecter # which is a valid hex string, but not a valid uuid4. x = '89eb35868a8247a4c911758a62601cf7' print validate_uuid4(x)