.encode and .decode both have error modes.
The default is 'strict', which raises exceptions on error. Other modes are more forgiving.
Encoding
>>> "£13.55".encode('ascii', errors='replace')
b'?13.55'
>>> "£13.55".encode('ascii', errors='ignore')
b'13.55'
...