Вы получаете это '\ xc2 \ xa3' с помощью str ("£"), потому что ваш интерпретатор Python преобразует символ "£" в UTF-8 (я думаю, это ваш стандарт по умолчанию).Если вы хотите получить строку ASCII, вы должны сделать «£» .encode ('ascii'), но вы получите исключение UnicodeDecodeError, потому что это не символ ASCII, поэтому вам нужна фильтрация.
Даже если высделайте проверку на стороне клиента с помощью JS, но запрос все еще может быть выполнен с использованием инструмента curl или чего-то подобного, поэтому было бы лучше иметь проверку на стороне клиента и фильтрацию на стороне сервера.
На стороне сервераВы можете сделать что-то вроде этого:
>>> s = "ascii text 123 £ 456 go go"
>>> t = filter(lambda x: x.isalnum(), s)
>>> print t
"ascii text 123 456 go go"
Но этот код отфильтрует все не буквенно-цифровые символы.Если вы хотите разрешить все печатные символы ASCII, попробуйте вместо этого:
>>> import string
>>> string.printable
'0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~ \t\n\r\x0b\x0c'
>>> t = filter(lambda x: x in string.printable, s)
>>> print t
'ascii text 123 456 go go'