使用Python 3.2从文本文件中解析和打印属性值

时间:2012-06-20 15:34:45

标签: python file-io python-3.x

我刚开始使用/学习Python并且有一些问题。

我有一个由报告工具生成的文本文件。 该文件包含一些这样的东西。有很多东西基本上遵循下面写的格式。

  

格式=      {
  WINDOW_TYPE = “表格”,
  表格=      {Num_row_labels = 5   }   }

此文件中有命名值属性。 例如,Window_Type是具有值Tabular的属性的名称。 同样,对于Tabular命名属性,其值为5。

我希望能够做的是打开文件。

  1. 检查Window_Type是否为表格
  2. 如果是,请检查与表格相关联的Num_row_labels。
  3. 如果Num_row_lables的值大于或等于5,则打印文件的名称以及该文件所在的文件夹的路径。
  4. 我在Eclipse 3.7.2 IDE中使用Python 3.2。

    对于测试部分,我在IDE中导入了我的文本文件,并使用下面的代码来读取文件。将来我应该能够遍历扩展名为mrk的文件所在的文件夹。(这将是一个已知的目录,因为我们将这些文件保存在那里。)请帮助我。非常感谢!

    import os.path
    fn = os.path.join(os.path.dirname(__file__), 'Multitab.mrk')
    with open(fn, 'r') as file: 
        print(file.read())
    

1 个答案:

答案 0 :(得分:0)

请注意,这个答案是非常脏的黑客。这种格式几乎类似于JSON格式,这促使我编写了一个RE,它将转换字符串,以便json解析器可以对其进行干净的解析。这就是我所做的:

import re
import json

s = """Format= {
Window_Type="Tabular",
Tabular= { Num_row_labels=5 } }"""

s = "{" + re.sub(r'([a-zA-Z0-9_]+)=',r'"\1":', s) + "}"
obj = json.loads(s)

if obj['Format']['Window_Type'] == "Tabular":
    print "Its tabular!"
    numrows = obj['Format']['Tabular']['Num_row_labels']
    print "Numrows:", numrows
    if numrows >= 5:
        print "Print this fileName"

输出:

Its tabular!
Numrows: 5
Print this fileName