2011-12-14 35 views
63

我如何在Python中壓縮字符串?我如何在Python中壓縮字符串?

gzip.GzipFile存在,但這是文件對象 - 用純字符串呢?

+7

第一個結果,那實況只提到'StringIO`但確實沒有真正解釋如何去做。所以在這裏問這個問題是完全有效的,恕我直言。不過,在詢問和告訴我們關於它們之前的一些更多的試驗本來是不錯的。 – KevinDTimm 2011-12-14 15:18:08

+0

@KevinDTimm – Alfe 2015-06-04 08:45:50

+0

@Alfe - 這個問題在4年前關閉,原因與我的評論大致相同--OP沒有首先進行搜索。 – KevinDTimm 2015-06-04 13:05:55

回答

52

最簡單的方法是zlibencoding

compressed_value = s.encode("zlib") 

然後你解壓:

plain_string_again = compressed_value.decode("zlib") 
123

如果你想製作一個完整的gzip兼容的二進制字符串,用頭等等,您可以使用gzip.GzipFileStringIO

import StringIO 
import gzip 
out = StringIO.StringIO() 
with gzip.GzipFile(fileobj=out, mode="w") as f: 
    f.write("This is mike number one, isn't this a lot of fun?") 
out.getvalue() 

# returns '\x1f\x8b\x08\x00\xbd\xbe\xe8N\x02\xff\x0b\xc9\xc8,V\x00\xa2\xdc\xcc\xecT\x85\xbc\xd2\xdc\xa4\xd4"\x85\xfc\xbcT\x1d\xa0X\x9ez\x89B\tH:Q!\'\xbfD!?M!\xad4\xcf\x1e\x00w\xd4\xea\xf41\x00\x00\x00' 
-5
s = "a long string of characters" 

g = gzip.open('gzipfilename.gz', 'w', 5) # ('filename', 'read/write mode', compression level) 
g.write(s) 
g.close() 
爲「蟒蛇gzip的」 http://docs.python.org/library/gzip.html(也許你可以嘗試一點點?)