Python正则表达式删除所有HTML数据
我正在创建一个python程序,它对一个站点进行爬网和索引,当我运行当前代码时,我得到了错误Python正则表达式删除所有HTML数据,python,regex,Python,Regex,我正在创建一个python程序,它对一个站点进行爬网和索引,当我运行当前代码时,我得到了错误 UnicodeEncodeError: 'charmap' codec can't encode character '\u200b' in position 0: character maps to <undefined> 我想知道这个错误是由于不正确的正则表达式造成的,还是发生了其他的事情 已解决 我加上了这个表情 c = re.sub('[\W_]+', ' ', c) 它将所有非
UnicodeEncodeError: 'charmap' codec can't encode character '\u200b' in position 0: character maps to <undefined>
我想知道这个错误是由于不正确的正则表达式造成的,还是发生了其他的事情
已解决
我加上了这个表情
c = re.sub('[\W_]+', ' ', c)
它将所有非字母数字替换为一个空格您遇到的问题似乎是enconding,而regex没有。你试过换衣服吗
c = page_contents.decode('utf-8')
c = re.sub('[\W_]+', ' ', c)
以及使用anothed编码,例如:
c = page_contents.decode('latin-1')
?这起作用了,用空格代替了所有非字母数字
c = re.sub('[\W_]+', ' ', c)
请检查,我希望它会有帮助。你正在尝试用正则表达式解析HTML吗?这通常不是一个好主意-使用HTML解析器。这里的其他评论是正确的,您使用正则表达式“净化”页面内容的方法从根本上是有缺陷的。但这里的问题不在于正则表达式,而在于如何将字节转换为字符串。并非所有网页都将使用UTF-8。相反,您需要解析
内容类型
标题(可以在
标记中覆盖)以确定正确的编码。要使用的正确编码将是HTTP响应的一部分,可以在内容类型
标题中,也可以在
标记中。简单地猜测一个不同的编码并没有任何好处。好吧,我只是说报告的问题不是与regex有关,而是与enconding有关,并建议一种检查方法,而不是给出解决方案。是的。。。你是对的(我刚刚在上面添加了一个类似的评论)。
c = re.sub('[\W_]+', ' ', c)