Как заставить интерпретатор Python правильно обрабатывать не-ASCII символы в строковых операциях? - PullRequest
100 голосов
/ 27 августа 2009

У меня есть строка, которая выглядит так:

6Â 918Â 417Â 712

Простой способ обрезать эту строку (как я понимаю Python) - просто сказать, что строка находится в переменной с именем s, мы получаем:

s.replace('Â ', '')

Это должно сработать. Но, конечно, он жалуется на то, что не-ASCII символ '\xc2' в файле blabla.py не закодирован.

Я никогда не мог понять, как переключаться между различными кодировками.

Вот код, он действительно такой же, как и выше, но теперь он в контексте. Файл сохраняется как UTF-8 в блокноте и имеет следующий заголовок:

#!/usr/bin/python2.4
# -*- coding: utf-8 -*-

код:

f = urllib.urlopen(url)

soup = BeautifulSoup(f)

s = soup.find('div', {'id':'main_count'})

#making a print 's' here goes well. it shows 6Â 918Â 417Â 712

s.replace('Â ','')

save_main_count(s)

Это не дальше, чем s.replace ...

Ответы [ 11 ]

0 голосов
/ 08 ноября 2011

Для чего бы это ни стоило, мой набор символов был utf-8, и я включил классическую строку "# -*- coding: utf-8 -*-".

Однако я обнаружил, что у меня не было Universal Newlines при чтении этих данных с веб-страницы.

В моем тексте было два слова, разделенных "\r\n". Я делил только на \n и заменял "\n".

Как только я перебрал и увидел соответствующий набор символов, я понял ошибку.

Таким образом, это также может быть набор символов ASCII , но это символ, который вы не ожидали.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...