Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/334.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
Python解析结构化文本文件_Python_Structured Data - Fatal编程技术网

Python解析结构化文本文件

Python解析结构化文本文件,python,structured-data,Python,Structured Data,我想用python解析以下格式的结构化文本文件: [filter name_of_filter] field1 = xxx, xxx field2 = 23 文本文件可能包含具有不同字段数的其他标题。对我来说,该结构类似于Windows ini文件。我希望以ConfigParser提供访问的相同方式访问数据,即能够列出节,然后查看给定节的字段及其对应值。其目的是读取文件,修改其中的位,然后以相同的格式将其写回 原始代码 输出 [] 我出错的地方是,不存在名为“test”的文件,这是我的一个蹩

我想用python解析以下格式的结构化文本文件:

[filter name_of_filter]
field1 = xxx, xxx
field2 = 23
文本文件可能包含具有不同字段数的其他标题。对我来说,该结构类似于Windows ini文件。我希望以ConfigParser提供访问的相同方式访问数据,即能够列出节,然后查看给定节的字段及其对应值。其目的是读取文件,修改其中的位,然后以相同的格式将其写回

原始代码 输出

[]
我出错的地方是,不存在名为“test”的文件,这是我的一个蹩脚错误

背景 在发布之前,我尝试了ConfigParser(正如我很久以前在.ini文件中使用的那样),但我无法让它工作。Google和SO让我想到了pyparser,但这似乎更能解释句子,我不知道如何为多行构建模板。我一直在寻找像ConfigParser这样的东西,以及它如何处理.ini文件,或者BeautifulSoup如何处理html/xml文档,或者lxml如何处理xml文档等等

不幸的是,我不知道这属于编程/数据处理的哪一个分支,也不知道如何使用正确的关键字来为自己确定解决方案。我沮丧地在这里贴了一个问题

可接受的答案 以下各项均可接受:

  • 演示如何使用ConfigParser解决此问题
  • 或者,如果有另一个模块可以解释这种类型的结构化文本文件,请说明它并提供一个示例
  • 加分 这类问题属于编程或数据处理的哪个分支?如果您有一些数据,您可以定义一个模板,或者自动定义一个模板,然后应用该模板以结构化方式访问数据


    谢谢

    您当然可以通过以下方式处理您的示例:

    使用文件:

    config = ConfigParser.RawConfigParser(allow_no_value=True)
    with open(fn) as fin:
        config.readfp(fin)
        for section in config.sections():
            print '"{}":\t{}'.format(section, config.items(section))
    
    # "filter name_of_filter":  [('field1', 'xxx, xxx'), ('field2', '23')]
    

    若您想要像configparser这样的函数而不使用configparser,我想从作为引用的开始。具体来说,您可以。

    您当然可以通过以下方式处理您的示例:

    使用文件:

    config = ConfigParser.RawConfigParser(allow_no_value=True)
    with open(fn) as fin:
        config.readfp(fin)
        for section in config.sections():
            print '"{}":\t{}'.format(section, config.items(section))
    
    # "filter name_of_filter":  [('field1', 'xxx, xxx'), ('field2', '23')]
    

    若您想要像configparser这样的函数而不使用configparser,我想从作为引用的开始。具体来说,您可以。

    该结构是否足够接近ini文件,以便ConfigParser库能够处理该文件?您是否尝试过搜索“python解析结构化文本文件”?在发布此问题之前,我已经知道configparser并亲自尝试过,但它没有按预期工作。Google和stack overflow让我找到了pyparser,但我无法让它工作。我已经修正了这个问题。如果有帮助的话,我愿意重新命名这个问题,更愿意接受建议。这个结构是否足够接近ini文件,ConfigParser库能够处理该文件?您是否尝试过搜索“python解析结构化文本文件”?在发布此问题之前,我已经知道configparser并亲自尝试过,但它没有按预期工作。Google和stack overflow让我找到了pyparser,但我无法让它工作。我已经修正了这个问题。如果有帮助,我愿意重新命名这个问题,然后很乐意接受建议。谢谢老兄!我确实尝试过ConfigParser,但无法使其工作。我没有意识到需要allow_no_value=True和io.Bytes位。将在接受之前进行阅读和测试。@fswings:在这种情况下,“无法使其工作”是什么意思?我想如果你对一个新问题更具体一些,我(或其他人)可以帮助你。ConfigParser对示例有效。也许可以提供更具体的示例和更具体的所需输出。如果您能简要说明为什么需要或明智地使用io.BytesIO,我将不胜感激。在这种情况下,
    io.BytesIO
    只是用来使内存中的字符串看起来像一个文件。更常用于此,但我使用了,因为这是ConfigParser的Python文档示例中的内容。这里要重点介绍的主要内容是在文件中使用ConfigParser…多谢老兄!我确实尝试过ConfigParser,但无法使其工作。我没有意识到需要allow_no_value=True和io.Bytes位。将在接受之前进行阅读和测试。@fswings:在这种情况下,“无法使其工作”是什么意思?我想如果你对一个新问题更具体一些,我(或其他人)可以帮助你。ConfigParser对示例有效。也许可以提供更具体的示例和更具体的所需输出。如果您能简要说明为什么需要或明智地使用io.BytesIO,我将不胜感激。在这种情况下,
    io.BytesIO
    只是用来使内存中的字符串看起来像一个文件。更常用于此,但我使用了,因为这是ConfigParser的Python文档示例中的内容。这里要关注的主要内容是将ConfigParser与文件一起使用。。。
    config = ConfigParser.RawConfigParser(allow_no_value=True)
    with open(fn) as fin:
        config.readfp(fin)
        for section in config.sections():
            print '"{}":\t{}'.format(section, config.items(section))
    
    # "filter name_of_filter":  [('field1', 'xxx, xxx'), ('field2', '23')]