从文件读取模式并使用python写入另一个文件

时间:2014-07-28 15:28:10

标签: python file

我希望从文件中读取每个函数,将其写入一个新文件,该文件对于每个函数是独立的。

input_file as:

function Script1(){
  var player = GetPlayer();
}    
function Script2(){
  var sVar1 = 3;    
}    
function Script3(){
  var sVar1 = 2;    
}

如何复制每个功能的内容?

3 个答案:

答案 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等正确的解析器。