python - python中的文本压缩

标签 python text-compression

我有这段文字:

2,3,5,1,13,7,17​​,11,89,1,233,29,61,47,1597,19,37,41,421,199,28657,23,3001,521,53,281,514229,31,557 ,2207,19801,3571,141961,107,73,9349,135721,2161,2789,211,433494437,43,109441,139,2971215073,1103,97,101,6376021,90481,947,617719 ,59,353,2521,4513,3010349,35239681,1087,14736206161,9901,269,67,137,71,6673,103681,9375829,54018521,230686501,29134601,988681,79,157,1601,2269,370248451,99194853094755497,83,9521 ,6709,173,263,1069,181,741469,4969,4531100550901,6643838879,761,769,193,599786069,197,401,743519377,919,519121,103,8288823481,119218851371,1247833,11128427,827728777,331,1459000305513721,10745088481,677,229,1381 ,347,29717,709,159512939815855788121,

这是我的生成器程序生成的数字,现在这个问题有源代码限制,所以我不能在我的解决方案中使用上面的文本所以我想压缩它并把它放到一个python 中的数据结构,以便我可以通过索引打印它们:

F = [`compressed data`]

F[0] 会得到 2 F[5] 会得到 7 这样的......请给我一个合适的压缩建议技术。

PS:我是 python 的新手,所以请解释你的方法。

最佳答案

当然你可以这样做:

import base64
import zlib
compressed = 'eJwdktkNgDAMQxfqR+5j/8V4QUJQUttx3Nrzl0+f+uunPPpm+Tf3Z/tKX1DM5bXP+wUFA777bCob4HMRfUk14QwfDYPrrA5gcuQB49lQQxdZpdr+1oN2bEA3pW5Nf8NGOFsR19NBszyX7G2raQpkVUEBdbTLuwSRlcDCYiW7GeBaRYJrgImrM3lmI/WsIxFXNd+aszXoRXuZ1PnZRdwKJeqYYYKq6y1++PXOYdgM0TlZcymCOdKqR7HYmYPiRslDr2Sn6C0Wgw+a6MakM2VnBk6HwU6uWqDRz+p6wtKTCg2WsfdKJwfJlHNaFT4+Q7PGfR9hyWK3p3464nhFwpOd7kdvjmz1jpWcxmbG/FJUXdMZgrpzs+jxC11twrBo3TaNgvsf8oqIYwT4r9XkPnNC1XcP7qD5cW7UHSJZ3my5qba+ozncl5kz8gGEEYOQ'
data = zlib.decompress(base64.b64decode(compressed))

请注意,这只缩短了 139 个字符。 但它有效:

>>> data
'2,3,5,1,13,7,17,11,89,1,233,29,61,47,1597,19,37,41,421,199,28657,23,3001,521,53,281,514229,31,557,2207,19801,3571,141961,107,73,9349,135721,2161,2789,211,433494437,43,109441,139,2971215073,1103,97,101,6376021,90481,953,5779,661,14503,797,59,353,2521,4513,3010349,35239681,1087,14736206161,9901,269,67,137,71,6673,103681,9375829,54018521,230686501,29134601,988681,79,157,1601,2269,370248451,99194853094755497,83,9521,6709,173,263,1069,181,741469,4969,4531100550901,6643838879,761,769,193,599786069,197,401,743519377,919,519121,103,8288823481,119218851371,1247833,11128427,827728777,331,1459000305513721,10745088481,677,229,1381,347,29717,709,159512939815855788121,'

如果你的代码限制真的这么短,也许你应该计算这个数据什么的?这是什么?

关于python - python中的文本压缩,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4844907/

相关文章:

python - matplotlib 子图 : how to freeze x and y axis?

python - 如何让 WTForms 要求输入 RadioButton 字段?

python - PySide2 将鼠标事件传递给系统

algorithm - 文本压缩算法

algorithm - 这个文本压缩方案的名称是什么?

algorithm - Haskell 线性时间在线算法

python - 如何垂直拆分数据框,在每个结果 DF 中有 N 列

python - 如何使用 pybrain 等外部 python 库在 cython 中编译我的 python 代码