_alphanum_str = set('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890') _alphanum_bytes = set(b'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890') def escape(pattern): "Escape all non-alphanumeric characters in pattern." if isinstance(pattern, str): alphanum = _alphanum_str s = list(pattern) for i in range(len(pattern)): c = pattern[i] if c not in alphanum: if c == '\000': s[i] = '\\000' else: s[i] = '\\' + c return ''.join(s) else: alphanum = _alphanum_bytes s = [] esc = ord(b'\\') for c in pattern: if c in alphanum: s.append(c) else: if c == 0: s.extend(b'\\000') else: s.append(esc) s.append(c) return bytes(s)