Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
解析Java程序的Python配置文件_Java_Python_Parsing_Config - Fatal编程技术网

解析Java程序的Python配置文件

解析Java程序的Python配置文件,java,python,parsing,config,Java,Python,Parsing,Config,我在谷歌上没有发现任何类似的东西,我想知道是否有一种更快的方法可以做到以下几点: 我需要解析用Python编写的Java程序的构建脚本。更具体地说,我想解析硬编码到这些构建脚本中的字典 例如,这些脚本包含以下条目: config = {} config["Project"] = \ { "Name" : "ProjName", "Version" : "v2",

我在谷歌上没有发现任何类似的东西,我想知道是否有一种更快的方法可以做到以下几点:

我需要解析用Python编写的Java程序的构建脚本。更具体地说,我想解析硬编码到这些构建脚本中的字典

例如,这些脚本包含以下条目:

config = {}

config["Project"] = \
    {
        "Name"                          : "ProjName",
        "Version"                       : "v2",
        "MinimumPreviousVersion"        : "v1",
    }   

def actualCode ():
# Some code that actually compiles the relevant files
(实际的编译是通过调用另一个程序完成的,这个脚本只是设置了我想要提取的所需选项)。 例如,我想提取“Name”=“ProjName”等等

我知道ConfigParser库是Python的一部分,但它是为.ini文件设计的,因此在我所说的构建脚本中可能出现的实际Python代码存在问题(抛出异常和崩溃)。因此,使用这个库意味着我必须首先读取其中的文件,并删除ConfigParser将反对的文件行

有没有比将配置文件作为普通文件读入并解析它更快的方法?我正在寻找能做到这一点的图书馆。我不太介意这些库使用哪种语言。

试试看。它是用Java写的,你用。。。Java也是


使用堆栈存储元素等;它的解析器类是泛型的,您可以从中得到最终结果。

我试图解决类似的问题。我将目录转换为JSON对象,这样我就可以以最简单的方式使用JSON对象查询密钥。这个解决方案对我来说适用于多级键值对。我

这是算法

  • 使用字符串或文件中的正则表达式查找配置[“key_name”]。使用以下正则表达式

    config(.*?\\[(.*?\\]

  • 将花括号内的数据放入字符串中。使用一些基于堆栈的代码,因为在复杂目录中可能有{}或[]类型的嵌套方括号
  • 将圆括号(如有)替换为方括号“[]”,将反斜杠“\”替换为空白字符“”,如下所示

      expression.replace('(', '[')
      .replace(')', ']')
      .replace('\\', ' ')
    
  • JSONObject json=(JSONObject)parser.parse(表达式)


  • 这是您的JSON对象。您可以按自己的方式使用它。

    我知道这是一个老问题,但我发现了一个非常有用的Java配置解析器库

    它提供了一个简单的函数
    getValue(“sectionName”、“optionName”)
    ,允许您获取节内选项的值

    
    [部门名称]
    optionName=optionValue
    

    您对字典的值和键有任何限制吗?如果所有的键/值都是字符串,那么您可以很容易地用正则表达式解析内容。@Bakuriu构建脚本中不仅仅包含字典(还有普通代码),我想从构建脚本中提取一些字典