同是str类型,为什么一个有返回值,一个没有?

lioujian47 2008-07-09 05:19:06
两次调用getcontent(),只有一次能输出:(



def body(url1,url2):
try:
txt = urllib.urlopen(url1).read()
except Exception, e:
txt = urllib.urlopen(url2).read()
txt = unicode(txt,"gbk")
parser = html2txt()
parser.feed(txt)
parser.close()
#print type(parser.text) #<type 'unicode'>
return parser.text
def cr2n(txt):
#data = re.sub('(\s|\xa0)+','',txt.encode("gbk"))
#data = data.replace('<NEWLINE>',"\n").strip()
p = re.compile(r'(。|!|……|】)')
t = p.sub('。\n',txt.encode("gbk"))
#print type(t) # t is str
return t
def getcontent(ar,txt):
ctent = re.findall(ar,txt)
for i in ctent:
print i

url1 = 'http://docs.google.com/Doc?id=d8b2mxm_107cc3mgqgr' #
url2 = 'http://docs.google.com/Doc?id=d8b2mxm_107cc3mgqgr' #暂时用一样的

test = '需要匹配这个。' # test是str
ar = '匹配'

k = cr2n(body(url1,url2)) #k 是 str
getcontent(ar,k)#这个没有输出:(
getcontent(ar,test) #这个工作正确

...全文
160 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
lioujian47 2008-07-10
  • 打赏
  • 举报
回复

txt = unicode(txt,"gbk")

要改成

txt = unicode(txt,"utf-8")



这就意味着,当抓取一个html的时候必须要看他的charset咯?
lioujian47 2008-07-10
  • 打赏
  • 举报
回复
困扰了我2天一夜.
我才发现原来是我的正则有问题.
谢谢你了
wx红杉树 2008-07-10
  • 打赏
  • 举报
回复
不是,只是按你设置的解码格式解码而已。

37,708

社区成员

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

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