我是Python的初学者,试图解码这个javascript序列。我不仅是Python的初学者,我更了解javascript :)我知道我可以把它放到这样的在线解码器中:http://coderstoolbox.net/string/但我想自己处理它 - 更多的是练习而不是任何东西别...我使用Beautiful Soup来获取数据,所以我的功能可用于解码。
如果有人能指出我在python中的等效函数,我会很感激。
function encode(str){
var t=''; var s=unescape(str);
var x=Math.round(Math.sqrt(49));
for(var i=0;i<s.length;i++) t+=
String.fromCharCode(s.charCodeAt(i)^(i%2?x:0));
print(t);
}
到目前为止,这是我对它的理解:
感谢阅读!
编辑:是否有一个可以运行此代码的python库?我之前用bash和rhino做过这个,但Python中的替代品对于初学者来说似乎有点吓人,比如蜘蛛侠等...答案 0 :(得分:0)
我不懂Python,但我可以解释这里发生了什么,以便你可以用Python重写。
1)声明了函数编码而没有赋值,因此在JavaScript中它将被提升到其父函数的顶部(如果有的话)。
2)内部函数编码有4个变量将被提升到函数编码的顶部:
3)循环索引从0开始,并且不迟于索引与变量s上的字符长度相同的大小。
4)循环以草率方式编写而没有花括号,因此它在第一个换行符处终止,这意味着变量t在反映变量s时执行字符串连接。
5)以字符串对象开头的下一行看起来应该是循环,但不是,因为这段代码很邋。无论如何都没关系,因为变量s并没有真正用于任何其他事情。
6)使用print函数,变量t作为参数。变量t看起来应该与变量s相同,这可能与本代码的原始作者不同。
7)我不知道什么是印刷品。也许原作者的意思是alert或console.log而不是print。
答案 1 :(得分:0)
1)相当于unescape的python是python 2.x系列中的urllib.unquote()和python 3.x系列中的urllib.parse.unquote()
2)您认为最简单的方法是x = 7
3)循环使用字符串章程的最简单方法是for c in string:
,但要获得你应该做的索引for i,c in enumerate(string):
4)string.charChodeAt(c)与chr(c)
相同最后我会复制循环部分,如下所示:
result = []
for i,c in enumerate(string):
result.append(chr(ord(c)^(x if i%2 else 0)))
print("".join(result))
实际上使用临时数组来进行追加比发生在字符串上更有效,因为字符串不会变异