Python中编码问题

jeal_zhang 2010-07-02 03:39:31
我用python抓取网页时,返回这么一段乱码:

 独家晶透感

请问这是什么编码,怎么解码才能正常显示?我使用

s.decode('gbk','utf-8')等等 均没有效果

 谢谢
...全文
270 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
jeal_zhang 2010-07-05
  • 打赏
  • 举报
回复
def unescape(text):
def fixup(m):
text = m.group(0)
if text[:2] == "&#":
# character reference
try:
if text[:3] == "&#x":
return unichr(int(text[3:-1], 16))
else:
return unichr(int(text[2:-1]))
except ValueError:
print "erreur de valeur"
pass
else:
# named entity
try:
if text[1:-1] == "amp":
text = "&"
elif text[1:-1] == "gt":
text = ">"
elif text[1:-1] == "lt":
text = "<"
else:
print text[1:-1]
text = unichr(htmlentitydefs.name2codepoint[text[1:-1]])
except KeyError:
print "keyerror"
pass
return text # leave as is
return re.sub("&#?\w+;", fixup, text)


在网上找到这个一个函数 解决了此问题 谢谢大家
notax 2010-07-05
  • 打赏
  • 举报
回复
>>> from BeautifulSoup import BeautifulStoneSoup as SSoup
>>> s='独家晶透感'
>>> print SSoup(s, convertEntities=SSoup.XML_ENTITIES).contents[0]
独家晶透感
>>>
feilniu 2010-07-04
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 thy38 的回复:]

引用 7 楼 feilniu 的回复:

引用 6 楼 thy38 的回复:

Python 3000 现在应用还不是很广啊


我不做大型开发,不用第三方库,只是用Python做一些简单的文本处理,所以选了3.x版本。
冒昧地问一句,LZ用Python3.x感觉比2.x有什么优势?
[/Quote]

我不是LZ。

3.x比2.x在模块划分和命名上比较一致,很多类型、函数、语句都做了统一化处理,所以在使用上比较简单。
性能上的差别感觉不出来,如上所说,“我不做大型开发”。
最大的劣势就是兼容问题和第三方库支持问题吧。
thy38 2010-07-04
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 feilniu 的回复:]

引用 6 楼 thy38 的回复:

Python 3000 现在应用还不是很广啊


我不做大型开发,不用第三方库,只是用Python做一些简单的文本处理,所以选了3.x版本。
[/Quote]冒昧地问一句,LZ用Python3.x感觉比2.x有什么优势?
feilniu 2010-07-03
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 thy38 的回复:]

Python 3000 现在应用还不是很广啊
[/Quote]

我不做大型开发,不用第三方库,只是用Python做一些简单的文本处理,所以选了3.x版本。
thy38 2010-07-03
  • 打赏
  • 举报
回复
Python 3000 现在应用还不是很广啊
foolbirdflyfirst 2010-07-02
  • 打赏
  • 举报
回复
>>> s = '独家晶透感'
>>> import re
>>> for i in re.compile('\d+').findall(s):
print unichr(int(i))






foolbirdflyfirst 2010-07-02
  • 打赏
  • 举报
回复
大于256的用unichr吧
feilniu 2010-07-02
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 jeal_zhang 的回复:]

print eval(chr(29420))
ValueError: chr() arg not in range(256)

不对呀
[/Quote]
我用的是Python 3.1。你找找你的版本所对应的Unicode转换函数。
jeal_zhang 2010-07-02
  • 打赏
  • 举报
回复
print eval(chr(29420))
ValueError: chr() arg not in range(256)

不对呀
feilniu 2010-07-02
  • 打赏
  • 举报
回复
这是HTML中的Character Entities,独表示Unicode编码为29420的字符。


s = '独家晶透感'
eval(s.replace('&#','chr(').replace(';',')+')+'""')

37,743

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • WuKongSecurity@BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧