I have a string that looks like so:
6Â 918Â 417Â 712
The clear cut way to trim this string (as I understand Python) is simply to say the string is in a variable called s
, we get:
s.replace('Â ', '')
That should do the trick. But of course it complains that the non-ASCII character '\xc2'
in file blabla.py is not encoded.
I never quite could understand how to switch between different encodings.
Here's the code, it really is just the same as above, but now it's in context. The file is saved as UTF-8 in notepad and has the following header:
#!/usr/bin/python2.4
# -*- coding: utf-8 -*-
The code:
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)
It gets no further than s.replace
...
Way too late for an answer, but the original string was in UTF-8 and '\xc2\xa0' is UTF-8 for NO-BREAK SPACE. Simply decode the original string as
s.decode('utf-8')
(\xa0 displays as a space when decoded incorrectly as Windows-1252 or latin-1:Example (Python 3)
Output
The following code will replace all non ASCII characters with question marks.
edit: my first impulse is always to use a filter, but the generator expression is more memory efficient (and shorter)...
Keep in mind that this is guaranteed to work with UTF-8 encoding (because all bytes in multi-byte characters have the highest bit set to 1).
This is a dirty hack, but may work.