gpt4 book ai didi

javascript - 如何使用 Python 搜索文件中的 JavaScript 变量?

转载 作者:行者123 更新时间:2023-11-28 10:54:37 25 4
gpt4 key购买 nike

我的目录中有许多 JaveScript 文件。在这里,我想扫描每个文件,并想用 'str1''str2''str3' 等字符串替换每个 JavaScript 变量, ...、'strn' 等等。

我的问题是:如何识别 JavaScript 变量?

疑问:

  1. 如果我说var后面的关键字是一个变量,但是声明变量时没有强制使用var

  2. 如果我说 = 之前的关键字是一个变量,但是文件也包含 HTML 代码,因此在 HTML 标签内,属性与其值之间有 = 符号.

那么我如何识别必须替换的变量呢?

最佳答案

这看起来像是 JavaScript 解析器的工作。 slimit是一个 Python 包,允许您解析 JavaScript 代码并为其构建 AST。然后您可以在 AST 中导航以查找变量。或者,如果您正在处理语法上可能无效的 JavaScript,则可以使用 slimit 的词法分析器。

使用解析器的示例:

from slimit.parser import Parser
from slimit.visitors import nodevisitor
from slimit import ast

js = '''
var x = 100;
var y = 200;
s = 'This is a string';
for (var i=0; i<10; i++) {
x--;
y = y * 2;
}
'''

identifiers = set()
tree = Parser().parse(js)
for node in nodevisitor.visit(tree):
if isinstance(node, ast.Identifier):
identifiers.add(node.value)

>>> print "Found identifiers: {}".format(', '.join(identifiers))
Found identifiers: y, x, s, i

或者仅使用词法分析器:

from slimit.lexer import Lexer

js = '''
var x = 100;
var y = 200;
s = 'This is a string';
while (var i=0; i<10; i++) { // invalid while statement
x--;
y = y * 2;
}
'''

identifiers = set()
lexer = Lexer()

lexer.input(js)
for token in lexer:
if token.type == 'ID':
identifiers.add(token.value)

>>> print "Found identifiers: {}".format(', '.join(identifiers))
Found identifiers: y, x, s, i

关于javascript - 如何使用 Python 搜索文件中的 JavaScript 变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26358543/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com