【发布时间】:2014-10-03 18:39:33
【问题描述】:
我有一个大文本文件,其结构如下:
Student = {
PInfo = {
ID = 0001;
Name.First = "Joe";
Name.Last = "Burger";
DOB = "01/01/2000";
};
School = "West High";
Address = {
Str1 = "001 Main St.";
Zip = 12345;
};
};
Student = {
PInfo = {
ID = 0002;
Name.First = "John";
Name.Last = "Smith";
DOB = "02/02/2002";
};
School = "East High";
Address = {
Str1 = "001 40nd St.";
Zip = 12346;
};
Club = "Football";
};
....
Student 块共享相同的条目,如“PInfo”、“School”和“Address”,但其中一些可能有其他条目,例如“John Smith”的“Club”信息,“乔汉堡”。 我想要做的是获取每个学生的姓名、学校名称和邮政编码并将它们存储在字典中,例如
{'Joe Burger':{School:'West High', Zip:12345}, 'John Smith':{School:'East High', Zip:12346}, ...}
作为python编程的新手,我尝试打开文件并逐行分析,但是看起来很麻烦。并且实际文件比我上面发布的示例要大得多,而且要复杂得多。我想知道是否有更简单的方法来做到这一点。先谢谢了。
【问题讨论】:
-
如果是
json或yaml,有模块可以很容易地读取这些数据。 -
我昨天问了一个类似的问题,但还没有收到任何答案 - stackoverflow.com/questions/26173372/parsing-an-ad-hoc-tree 。支持您的问题
-
@spade:你得到了完全不同的东西。并且没有神奇的算法可以自动理解无中生有的结构或模式。必须自己做;对不起。
-
@DonQuestion,我清楚地看到这两个问题之间有很多相似之处,因为它们都可以表示为 n 叉树。这些图案对人眼来说非常明显——应该可以训练机器学习阅读它。我希望来自编译器甚至 NLP 领域的人就从嵌套结构构建通用树提出建议。无论如何,我并不是要劫持这个线程,所以会在这里打住。
-
您可以尝试PyParsing 或其他Python parsers 为您的输入格式创建解析器。
标签: python parsing text parser-generator