打开html文件以读取其搜索特定标记的来源

时间:2014-02-15 07:58:35

标签: file python-3.x unicode

我无法在读取模式下打开html文件以在其源代码中搜索字符串匹配。

fo = open("htm1.html", "r");
str = fo.read(10);
print("Read String is : ", str);
fo.close();

这不起作用。我收到了以下错误:

Traceback (most recent call last):
  File "C:/Python33/myProjects/malCode.py", line 34, in <module>
    str = fo.read(10);
  File "C:\Python33\lib\encodings\cp1252.py", line 23, in decode
    return codecs.charmap_decode(input,self.errors,decoding_table)[0]
UnicodeDecodeError: 'charmap' codec can't decode byte 0x90 in position 6040: character maps to <undefined>

1 个答案:

答案 0 :(得分:0)

如果您未指定编码,open() will use locale.getpreferredencoding();在您的情况下cp1252。这是一个问题,因为HTML文件采用了一种不同的,尚未确定的编码。碰巧使用了哪种编码是一件好事。如果做不到这一点,您可以使用'utf-8''latin-1'.等常见编码来解决这个问题。例如:

with open("htm1.html", "r", encoding="utf-8") as fo:
    sample = fo.read(10)

(次要语法注释:不需要以行结尾的分号。)