使用密钥加密句子时遇到DataFrame.any()参数错误问题
解决DataFrame.any()参数错误:TypeError: takes 1 positional argument but 2 were given
错误原因
这个报错源于Pandas版本更新后的API变更:DataFrame.any()方法不再支持位置参数(比如直接传1),必须通过关键字参数axis=1来指定按行检查是否存在True值。旧版本允许any(1)的简写,但新版本强制要求显式使用axis=1来明确轴方向。
修正方案
把解密函数中的报错行:
index_nb = df[df.eq(j).any(1)]
替换为:
index_nb = df[df.eq(j).any(axis=1)]
完整修正后的decode_message函数
def decode_message(message): new_word = '' decoded_message = [] for i in range(0, len(message), 2): j = message[i:i + 2] # 修正any()的参数写法,用axis=1指定按行检查 index_nb = df[df.eq(j).any(axis=1)] df2 = index_nb['Character'].tolist() s = [str(x) for x in df2] decoded_message = decoded_message + s new_word = ''.join(decoded_message) return new_word
额外提示
你的加密逻辑中,未识别字符会被替换成三位的@@@,但解密时是按每两位截取字符串,这会导致后续字符的截取错位,最终解密结果混乱。建议统一加密后的字符长度(比如把未识别字符替换成两位标记##),避免解密时的截取错误。
内容的提问来源于stack exchange,提问作者mobbebede
相关产品推荐
相关产品推荐

