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
...
def removeNonAscii(s): return "".join(filter(lambda x: ord(x)<128, s))
edit: my first impulse is always to use a filter, but the generator expression is more memory efficient (and shorter)...
def removeNonAscii(s): return "".join(i for i in s if ord(i)<128)
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).