我之前使用bz2尝试解压缩输入。我想要解码的输入已经是压缩格式,所以我决定将格式输入交互式Python控制台:
>>> import bz2
>>> bz2.decompress(input)
这没用,没有任何错误。但是,当我尝试从html文件中提取文本然后解压缩时,我得到了不同的结果:
file = open("example.html", "r")
contents = file.read()
# Insert code to pull out the text, which is of type 'str'
result = bz2.decompress(parsedString)
我已经检查了我用原始字符串解析的字符串,它看起来完全相同。此外,当我将希望解压缩的字符串复制并粘贴到我的.py文件中时(基本上用双括号“”括起来),它工作正常。我还尝试用“rb”打开,希望它能将.html文件视为二进制文件,但它也无法正常工作。
我的问题是:这两个字符串有什么区别?它们都是'str'类型,所以我假设我缺少潜在的差异。此外,我将如何从.html中检索bz2内容,使其不会被视为不正确的数据流?任何帮助表示赞赏。谢谢!
答案 0 :(得分:2)
我的猜测是html文件包含数据的文本表示,而不是文件本身的实际二进制数据。
例如,请查看以下代码:
>>> t = '\x80'
>>> print t
>>> '\x80'
但是我说我创建了一个包含内容\x80
的文本文件并执行:
with open('file') as f:
t = f.read()
print t
我会回来的:
'\\x80'
如果是这种情况,您可以使用eval来获得所需的结果:
result = bz2.decompress(eval('"'+parsedString'"'))
只需确保您只为可信数据执行此操作。