在扫描三引号字符串字面量时遇到EOF
我在网上和这里找过,但没有找到答案:
这是我的代码:
zlib.decompress("""
xワᆳヤ=ラᄇHナs~Ʀᄑç\ムîà
Z@ÑÁÔQÇlxÇÆïPP~ýVãì゙M6ÛÐ|ê֭ᄁᄂヤ=)}éÓUeö3ᄎᄌú"}ʿïÿ÷1þ8ñ́U÷ᄏñíLÒVi:`ᄈᄎL!Ê҆p6-%Fë^ヘ÷à,Q.K!ユô`ÄA!ÑêweÌ ÊÚAロYøøÂjôóᅠÂcñ䊧fᆴùテúN :nüzAÝ7%ᄌcdUタᄌ3ôPۂタlンyHᆲᄑ$/yzᄒíàヌ'ÕÓ&`|S!<'ᄂ÷Zļᄐ2ホモ;ニ(ÅÛfb!úü$ナテᄒ,9ßhàPᄎᄄێフÑbØὛホQᄍ-Ü}(n;ᄄホLヤ\^ï9ᆭᄍラDdВéÞ|åPOGᄂÐÙ%â&AÔë)ÎTÐC ᄐïc枢í%Èï!フᄋëiq*ᄌVKÐNᄡ[ᄁfOq{OᆭÆÊ,0GᄂリmtツᄈOᄌΥ$#îヘqbYᄆメUニᄉÞáP`
ヨ×ᆵÃPwaレǩâ×)ハFcêÚ=!Åöᄊ
)AFñᄈ/cMᄃ!NóNΈór?pàÜòXw
Bvæ0ïçIÉoマ>5pᆭ-ØWÚNᄆùFᄆØPçÃþdᅠ;ル1[Oᄈホ~6ツᄈᆬŕìᄄޠ=øð@ネVᄅ)÷%ユÜib{HᄆKŅVlDCテîfÑWì÷ìáár.ワîv<dᄎn~ú*ÁÕ7ýá}EsYᆵWᄂÈ:R×ãQңメ?Ø1vヘäツ~èR1ᄉÜ*ᄡónAᆬjmNoツユᄈÌښᆬf[8ᆭÛ>゙OWラ|ÌbDᄁÖ녡M=Ð÷èâミム'ÂÝÐ ;ë mᄎQÂäԤۢ:モᄆdᄎᄑLȂ1ᄈ_÷YZᆲNòÛ â\ロxÐlݵᆵムᆱøm5Ëá=ïoÍlMᆪ[×#Ypᅠトx[ÉÊyæツoモナz)ᆭᄀÝÏìò
""")
我用 zlib.compress 压缩了一个字符串,得到了另一个字符串。请问我该怎么解压这个字符串呢?
谢谢,Bussiere
2 个回答
0
我不建议用那种方式来表示。可以在其他代码中使用 repr()
来生成一个干净的ASCII格式的表示,然后用这个结果。接着,只需要在结果中查找三重引号,然后把它们分开就可以了。
2
zlib.decompress这个函数应该可以正常工作,只要你把zlib.compress的输出结果传给它。
因为压缩后的字符串其实不是文本,而是二进制字符串。所以它在终端显示的时候就不太友好了,正如你发现的那样。
你可以使用base64编码,这样可以得到一些安全的内容,可以放进单元测试、粘贴到代码里等等。
>>> import zlib
>>> a = zlib.compress('fooo')
>>> b = a.encode('base64')
>>> b
'eJxLy8/PBwAENgG0\n'
>>> c = 'eJxLy8/PBwAENgG0\n'.decode('base64')
>>> zlib.decompress(c)
'fooo'
>>> zlib.decompress(a)
'fooo'
a作为输出结果适合用于二进制传输或者保存到文件。
b则更适合用在剪贴板上、发送邮件等场合。