我使用Huffman算法创建了一个Python脚本来压缩文本。说我有以下字符串:
string = 'The quick brown fox jumps over the lazy dog'
Run Code Online (Sandbox Code Playgroud)
运行我的算法将返回以下“位”:
result = '01111100111010101111010011111010000000011000111000010111110111110010100110010011010100101111100011110001000110101100111101000010101101110110111000111010101110010111111110011000101101000110111000'
Run Code Online (Sandbox Code Playgroud)
通过将结果的位数与输入字符串进行比较,该算法似乎有效:
>>> print len(result), len(string) * 8
194 344
Run Code Online (Sandbox Code Playgroud)
但是现在出现了一个问题:如何将其写入文件,同时仍然能够对其进行解码。您只能按字节而不是按位写入文件。通过将“代码”写为字节,根本就没有压缩!
我是计算机科学的新手,而在线资源对我来说并不有用。非常感谢所有帮助!
编辑:请注意,我的代码是这样的(在另一个输入字符串的情况下'xxxxxxxyzz'):
{'y': '00', 'x': '1', 'z': '10'}
Run Code Online (Sandbox Code Playgroud)
我创建结果字符串的方式是按照输入字符串的顺序将这些代码串联起来:
result = '1111111001010'
Run Code Online (Sandbox Code Playgroud)
如何从该结果返回到原始字符串?还是我完全错了?谢谢!