我希望从文件中读取每个函数,将其写入一个新文件,该文件对于每个函数是独立的。
input_file as:
function Script1(){
var player = GetPlayer();
}
function Script2(){
var sVar1 = 3;
}
function Script3(){
var sVar1 = 2;
}
如何复制每个功能的内容?
答案 0 :(得分:1)
您可以使用此正则表达式,假设所有函数都在各自的行(function SomeName()\n
)上开始,并以新行(\n}
)结束,如示例所示:
import re
with open('file.js', 'r') as f:
content = f.read()
functions = re.findall(r'(function\s.+?\(.*?\)\n.+?\n\})', content, re.DOTALL)
for i, func in enumerate(functions):
with open('func{}.js'.format(i), 'w') as f:
f.write(func)
请记住re.DOTALL
使您的正则表达式匹配函数跨越多行。
输出示例:
func1.js:
function Script1(){
var player = GetPlayer();
}
答案 1 :(得分:0)
您可以使用正则表达式:
import re
with open('input_file.js', 'r') as file:
script_str = file.read()
exp = re.compile(r'function\s+([^\s(]+)\s*\([^)]*\)\s*\{([^}]*)\}')
matches = exp.findall(script_str)
for m in matches:
script_name, script_content = m[0], m[1].strip()
with open('%s.js' % script_name, 'w') as file:
file.write(script_content)
如果你想捕获函数参数,只需在正则表达式的相应部分添加一个组(即用括号括起来[^)]*
)。
答案 2 :(得分:0)
如果javascript源代码很简单,格式很好,可以使用正则表达式。
对于更多涉及的内容,我建议使用pynarcissus等正确的解析器。