使用python特定语法解析大文本文件

卡卡马乔

我正在尝试使用python解析大型文本文件。

这些文件的语法如下:

<option1> {
<variable1>=<value1>; //<comment> 
<variable2>=<value2>;
..
<variableN>=<valueN>; //<comment> 
}

<option2> {
<variable1>=<value1>; //<comment> 
<variable2>=<value2>;
..
<variableN>=<valueN>; //<comment> 
}

...
...

<optionN> {
<variable1>=<value1>; //<comment> 
<variable2>=<value2>;
..
<variableN>=<valueN>; //<comment> 
}

我想获得实例<optionK>[<variableT>]价值。

是否有通过使用文件解析器执行此操作的最佳方法?

阿里·萨伊德·奥马尔(Ali SAID OMAR)

考虑上面的示例(丑陋的解决方案),您可以使用http://docs.python.org/2/library/htmlparser.html,如下所示:

test = """
<option1> {
<variable1>=<value1>; //<comment>
<variable2>=<value2>;
..
<variableN>=<valueN>; //<comment>
}

<option2> {
<variable1>=<value1>; //<comment>
<variable2>=<value2>;
..
<variableN>=<valueN>; //<comment>
}

...
...

<optionN> {
<variable1>=<value1>; //<comment>
<variable2>=<value2>;
..
<variableN>=<valueN>; //<comment>
}

"""

from HTMLParser import HTMLParser

# create a subclass and override the handler methods
class MyHTMLParser(HTMLParser):
    option = ""
    key = ""
    value = ""
    r = {}
    def handle_starttag(self, tag, attrs):
        self.currentTag = tag
        print "Encountered a start tag:", tag
        if "option" in tag:
            #self.r = {}
            self.option = tag
            self.r[self.option] = {}
        elif "{" in self.currentData or "=" not in self.currentData and "//" not in self.currentData:
            self.key = tag
            self.r[self.option][self.key] = ""
        elif "=" in self.currentData:
            self.value = tag
            self.r[self.option][self.key] = self.value
            #print self.r
    def handle_endtag(self, tag):
        self.currentData = None
        print "Encountered an end tag :", tag
    def handle_data(self, data):
        self.currentData = data
        print "Encountered some data  :", data
        #find a condition to yield result here "}" ? 

# instantiate the parser and fed it some HTML
parser = MyHTMLParser()  
parser.feed(test) 
print parser.r

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用Python解析文本文件

来自分类Dev

使用Python解析文本文件中的文本块

来自分类Dev

使用awk解析文本文件

来自分类Dev

使用awk解析文本文件

来自分类Dev

使用 python 从文本文件中提取特定行

来自分类Dev

ANTLR语法用于解析文本文件

来自分类Dev

如何创建索引以解析大文本文件

来自分类Dev

使用正则表达式解析大文本文件

来自分类Dev

解析文本文件

来自分类Dev

给定特定参数,使用AWK拆分大文本文件

来自分类Dev

C# 解析特定格式的文本文件

来自分类Dev

使用python编写文本文件

来自分类Dev

使用python读取文本文件

来自分类Dev

使用python获取文本文件内容。以及有关matplotlib语法的问题

来自分类Dev

Python生成的文本文件的大小比预期的大

来自分类Dev

如何使用Dask对大文本文件进行排序?

来自分类Dev

将大文本文件输出解析为另一个文本文件

来自分类Dev

如何使用python从大文本文件中搜索dict

来自分类Dev

Python:使用格式将大文本文件转换为数据框

来自分类Dev

如何使用python在文本文件中查找特定的文本行?

来自分类Dev

使用python使用分隔符解析文本文件

来自分类Dev

在python中解析结构化文本文件

来自分类Dev

Python解析文本文件的选定区域/范围

来自分类Dev

python解析文本文件中的条件多行

来自分类Dev

Python将文本文件解析为字典

来自分类Dev

将Python中的文本文件解析为字典

来自分类Dev

Python解析结构化文本文件

来自分类Dev

解析格式化文本文件的Python方法

来自分类Dev

Python:解析 html 并生成表格文本文件