python字符串的编解码
我有一个html页面列表,其中可能包含某些编码字符。一些例子如下:python字符串的编解码,python,character-encoding,decode,encode,Python,Character Encoding,Decode,Encode,我有一个html页面列表,其中可能包含某些编码字符。一些例子如下: <a href="mailto:lad%20at%20maestro%20dot%20com"> <em>ada@graphics.maestro.com</em> <em>mel@graphics.maestro.com</em> 在某些情况下出现错误。您需要取消浏览HTML实体,并取消URL引用。 标准库提供了和来帮助完成这些任
<a href="mailto:lad%20at%20maestro%20dot%20com">
<em>ada@graphics.maestro.com</em>
<em>mel@graphics.maestro.com</em>
在某些情况下出现错误。您需要取消浏览HTML实体,并取消URL引用。
标准库提供了和来帮助完成这些任务
import HTMLParser, urllib2
markup = '''<a href="mailto:lad%20at%20maestro%20dot%20com">
<em>ada@graphics.maestro.com</em>
<em>mel@graphics.maestro.com</em>'''
result = HTMLParser.HTMLParser().unescape(urllib2.unquote(markup))
for line in result.split("\n"):
print(line)
编辑2:
如果您不关心非ASCII字符,可以简化一点:
with open(filename) as fin:
decoded = fin.read().decode('ascii','ignore')
...
虽然此解决方案看起来不错,但它确实抛出了UnicodeDecodeError:“ascii”编解码器无法解码位置31处的字节0x94:序号不在范围(128)内的错误。请尝试使用.encode('ascii')在输入标记字符串之前,请在标记字符串上输入。@mcenley:如果您发布有关如何获取数据的更多详细信息,我们可以提供编码帮助。@bernie我已下载了一个html页面列表。我该怎么寄给你?不,不,我相信你。我们需要的是用于这些页面的编码,以及您如何读取它们。其原理是输入时解码(到Unicode),输出时编码。
import HTMLParser, urllib2
markup = '''<a href="mailto:lad%20at%20maestro%20dot%20com">
<em>ada@graphics.maestro.com</em>
<em>mel@graphics.maestro.com</em>'''
result = HTMLParser.HTMLParser().unescape(urllib2.unquote(markup))
for line in result.split("\n"):
print(line)
<a href="mailto:lad at maestro dot com">
<em>ada@graphics.maestro.com</em>
<em>mel@graphics.maestro.com</em>
import codecs
with codecs.open(filename, encoding="cp1252") as fin:
decoded = fin.read()
result = HTMLParser.HTMLParser().unescape(urllib2.unquote(decoded))
with codecs.open('/output/file.html', 'w', encoding='cp1252') as fou:
fou.write(result)
with open(filename) as fin:
decoded = fin.read().decode('ascii','ignore')
...