मैं पायथन में एक स्ट्रिंग को संकुचित कैसे करूं?मैं पायथन में एक स्ट्रिंग को संकुचित कैसे करूं?
gzip.GzipFile
मौजूद है, लेकिन यह फाइल ऑब्जेक्ट्स के लिए है - सादे तारों के बारे में क्या?
मैं पायथन में एक स्ट्रिंग को संकुचित कैसे करूं?मैं पायथन में एक स्ट्रिंग को संकुचित कैसे करूं?
gzip.GzipFile
मौजूद है, लेकिन यह फाइल ऑब्जेक्ट्स के लिए है - सादे तारों के बारे में क्या?
http://docs.python.org/library/archiving.html से एक उपयुक्त मॉड्यूल चुनें - या तो अपनी सटीक आवश्यकताओं के आधार पर gzip या zlib।
compressed_value = s.encode("zlib")
तो फिर तुम इसके साथ संपीड़न हटाने:
मुझे लगता है कि zlib में संपीड़न के कई स्तर हैं। जीजीआईपी का स्तर क्या है? – bellpeace
बेलपेस, क्या आपने gzip के लिए प्रलेखन के लिंक का पालन किया था? "संपीड़न तर्क 1 से 9 तक संपीड़न के स्तर को नियंत्रित करने वाला एक पूर्णांक है; 1 सबसे तेज़ है और कम से कम संपीड़न पैदा करता है, और 9 सबसे धीमा है और सबसे संपीड़न पैदा करता है। डिफ़ॉल्ट [रेडियक्टेड]" है। मैं आपको वास्तविक मूल्य की जांच करने दूंगा। :) –
डिफ़ॉल्ट 9 है, सबसे धीमा। –
सबसे आसान तरीका है zlib
encoding है
plain_string_again = compressed_value.decode("zlib")
स्ट्रिंग है? – dcousens
@ Daniel: हां, 's' एक पायथन 2.x वस्तु प्रकार 'str' है। –
[मानक एनकोडिंग] देखें (http://docs.python.org/2/library/codecs.html#standard-encodings) जहां उसे वह मिला (__ "कोडेक्स" __ तक नीचे स्क्रॉल करें)। यह भी उपलब्ध है: 's.encode ('rot13')', 's.encode ('base64')' – bobobobo
आप हेडर के साथ आदि एक पूरा gzip
संगत बाइनरी स्ट्रिंग निर्माण करने के लिए, चाहते हैं, आप gzip.GzipFile
का उपयोग StringIO
:
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'
के साथ कर सकते हैं
लाइफ सेवर। बस कमाल। मुझे पता है कि यह पुराना है, लेकिन धन्यवाद! –
यह स्वीकार्य उत्तर होना चाहिए। – ForeverWintr
इस के विपरीत है: 'डीईएफ़ gunzip_text (पाठ): infile = StringIO.StringIO() infile.write (पाठ) gzip.GzipFile साथ (fileobj = infile, मोड =" आर ") च के रूप में: च .rewind() f.read() वापसी बाहर .getvalue() – fastmultiplication
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 (शायद तुम सिर्फ एक छोटे से कोशिश कर सकते?)
मुझे लगता है कि यह प्रश्न प्रक्रिया में डिस्क पर लिखने के बिना स्मृति में एक स्ट्रिंग को संपीड़ित करने के बारे में था। अन्यथा आपका जवाब पूरी तरह से सही है। – Alfe
पहले परिणाम यह हुआ कि दस्तावेज केवल उल्लेख है 'StringIO' लेकिन करता है वास्तव में यह नहीं समझाओ कि यह कैसे करें। तो यहां सवाल पूछना पूरी तरह मान्य है, आईएमएचओ। उनसे पूछने और उन्हें बताने से पहले कुछ और परीक्षण अच्छे थे, हालांकि। – KevinDTimm
@KevinDTimm के लिए – Alfe
@Alfe - प्रश्न 4 साल पहले मेरे टिप्पणी के समान कारण के लिए बंद कर दिया गया था - ओपी ने पहले खोज करने का कोई प्रयास नहीं किया। – KevinDTimm