2012-12-13 203 views
-4

我正在开发解码下面给出的以base64格式编码的反向多行字符串。自动解码以base64格式编码的多行字符串

LnNlbHBtYXhlIGVzdSBvdCBlZXJmIGxlZUYgLnNldGlzYmV3IGNpZmZhcnQgaGdpaCBubyBub2l0YXNpbGFtcm9uZWQgZm8gdHBlY25vYyBlaHQgZWJpcmNzZUQgLjQ = ZWxpZiBlbm8gbmkgZWIgdHN1TSApaXYgICAg

s = 'ZWxpZiBlbm8gbmkgZWIgdHN1TSApaXYgICAg' 
s = s.decode('base64', 'strict') 

print s[::-1] 

通过上面的方法我得到正确的字符串,但我必须手动更改字符串。

请帮助。

+0

出了什么问题's.decode( '的base64')[:: - 1]'到底是什么?这是解码这些的唯一方式,真的。 –

+0

@MartijnPieters,正如你所看到的,OP没有做好,你的评论应该可能是一个答案。 –

+0

@InbarRose:你的意思是(无用的)添加“strict”?这不会破坏解码。我不确定OP在问什么,真的。 –

回答

2

从OP的评论:

list = ['LnNlbHBtYXhlIGVzdSBvdCBlZXJmIGxlZUYgLnNldGlzYmV3IGNpZmZhcnQgaGdpaCBubyBub2l0YXNpbGFtcm9uZWQgZm8gdHBlY25vYyBlaHQgZWJpcmNzZUQgLjQ=', 'ZWxpZiBlbm8gbmkgZWIgdHN1TSApaXYgICAg', 'c25vaXRhY2lmaWNlcHMgOC1QRVAgdGVlbSB0c3VNICl2ICAgIA==', 'Ni4yIG5vaHR5UCBodGl3IGtyb3cgdHN1TSApdmkgICAg', 'c2VsdWRvbSByZWh0byB5YiBlbGJhdHJvcG1pIGViIGRsdW9ocyBzc2FsQyApaWlpICAgIA=='] 
s = ''.join(list) 
s = s.decode('base64', 'strict') 
print (s[::-1]) 

join操作连接所有串在一起,但只有第一个字符串转换。这是因为,在解码基本64字符串时,忽略字符串中第一个或第二个=字符中的所有内容。取而代之的加盟,迭代:

list = ['LnNlbHBtYXhlIGVzdSBvdCBlZXJmIGxlZUYgLnNldGlzYmV3IGNpZmZhcnQgaGdpaCBubyBub2l0YXNpbGFtcm9uZWQgZm8gdHBlY25vYyBlaHQgZWJpcmNzZUQgLjQ=', 'ZWxpZiBlbm8gbmkgZWIgdHN1TSApaXYgICAg', 'c25vaXRhY2lmaWNlcHMgOC1QRVAgdGVlbSB0c3VNICl2ICAgIA==', 'Ni4yIG5vaHR5UCBodGl3IGtyb3cgdHN1TSApdmkgICAg', 'c2VsdWRvbSByZWh0byB5YiBlbGJhdHJvcG1pIGViIGRsdW9ocyBzc2FsQyApaWlpICAgIA=='] 
for s in list: 
    s = s.decode('base64', 'strict') 
    print (s[::-1]) 

或者使用列表理解。

list = ['LnNlbHBtYXhlIGVzdSBvdCBlZXJmIGxlZUYgLnNldGlzYmV3IGNpZmZhcnQgaGdpaCBubyBub2l0YXNpbGFtcm9uZWQgZm8gdHBlY25vYyBlaHQgZWJpcmNzZUQgLjQ=', 'ZWxpZiBlbm8gbmkgZWIgdHN1TSApaXYgICAg', 'c25vaXRhY2lmaWNlcHMgOC1QRVAgdGVlbSB0c3VNICl2ICAgIA==', 'Ni4yIG5vaHR5UCBodGl3IGtyb3cgdHN1TSApdmkgICAg', 'c2VsdWRvbSByZWh0byB5YiBlbGJhdHJvcG1pIGViIGRsdW9ocyBzc2FsQyApaWlpICAgIA=='] 
print "\n".join(s.decode('base64')[::-1] for s in list) 

输出:

4. Describe the concept of denormalisation on high traffic websites. Feel free to use examples. 
    vi) Must be in one file 
    v) Must meet PEP-8 specifications 
    iv) Must work with Python 2.6 
    iii) Class should be importable by other modules