使用:Python 3.4
我正试图从这里使用维基百科脚本/模块:
http://pastebin.com/FVDxLWNG(wikipedia.py)
http://pastebin.com/idw8vQQK(wiki2plain.py)
我遇到的问题是以下代码:
def article(self, article):
url = self.url_article % (self.lang, urllib.parse.quote_plus(article))
content = self.__fetch(url).read()
if content.upper().startswith("#REDIRECT"):
match = re.match('(?i)#REDIRECT \[\[([^\[\]]+)\]\]', content)
if not match == None:
return self.article(match.group(1))
raise WikipediaError('Can\'t found redirect article.')
return content
如果我运行这个我得到错误:" startwith first arg必须是字节或字节元组,而不是str" ,所以我把它改成
if content.upper().startswith(b"#REDIRECT"):
它运行正常。然后,我得到" TypeError:不能在类字节对象上使用字符串模式"当我尝试使用它的某个地方。我已经改变了一些脚本在3.4中工作但我似乎没有让这个工作。如何在STARTwith上解决此TypeError
问题?
文件" C:\ Anaconda3 \ lib \ re.py",第179行,在sub中 return _compile(pattern,flags).sub(repl,string,count)
TypeError:不能在类字节对象上使用字符串模式
答案 0 :(得分:2)
您应该通过正确的编码解码内容。
而不是content = self.__fetch(url).read()
试试这个:
result = self.__fetch(url)
content = result.read().decode(result.headers.get_content_charset())