【发布时间】:2010-11-23 10:36:48
【问题描述】:
我有一个看起来像这样的字符串:
6Â 918Â 417Â 712
修剪这个字符串的明确方法(据我了解 Python)只是说字符串在一个名为 s 的变量中,我们得到:
s.replace('Â ', '')
这应该可以解决问题。但它当然会抱怨文件 blabla.py 中的非 ASCII 字符 '\xc2' 未编码。
我一直不太明白如何在不同的编码之间切换。
这里是代码,它真的和上面一样,但现在它在上下文中。该文件在记事本中保存为 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...
【问题讨论】:
-
到目前为止尝试了所有 4 个答案。不去。仍然收到 UnicodeDecodeError: 'ascii' codec can't decode byte 0xc2 in position 1: ordinal not in range(128)
-
你的 unicode 字符串必须前面加上
u -
@SilentGhost:如您所见,无法确定它是 unicode 字符串。我得到一个包含上面显示的内容的字符串,但它包含非 ascii 字符串。这才是真正的问题。我猜它是 unicode,因为它不在前 128 个中。
-
该错误与传入的字符串无关。是你代码中的一个字符串引发了这个错误!
-
我敢打赌这就是 Python 3 对字符串和字节序列之间的区别如此严格的原因,只是为了避免这种混淆。