我正在使用python的base64模块,我得到一个可以编码或不编码的字符串.我想做的事情如下:
if isEncoded(s): output = base64.decodestring(s) else: output = s
想法?
一般来说,这是不可能的; 例如,如果您收到字符串'MjMj',您怎么可能知道它是否已经解码并且需要按原样使用,还是解码为'23#'?
你可以尝试一下,看看会发生什么:
import base64 def decode_if_necessary(s): try: return base64.decodestring(s) except: return s
但是你必须问自己:如果原始消息实际上是一个语法上有效的base64字符串,但不是一个意思呢?然后"解码"它将成功,但结果不是所需的输出.所以我不得不问:这真的是你想要的吗?
编辑:注意decodestring
不推荐使用.
您可以检查字符串是否可以使用base64编码。通常,该功能可以预测75%以上的精度,即数据已编码。
def isBase64(s): return (len(s) % 4 == 0) and re.match('^[A-Za-z0-9+/]+[=]{0,2}$', s)