在python中解析未知的数据结构
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了在python中解析未知的数据结构,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2183字,纯文字阅读大概需要4分钟。
内容图文
![在python中解析未知的数据结构](/upload/InfoBanner/zyjiaocheng/757/93945fc8e59c47e49693d1d5d7a1f090.jpg)
我有一个包含大量数据的文件,其格式类似于:
Group1 {
Entry1 {
Title1 [{Data1:Member1, Data2:Member2}]
Title2 [{Data3:Member3, Data4:Member4}]
}
Entry2 {
...
}
}
Group2 {
DifferentEntry1 {
DiffTitle1 {
...
}
}
}
事实是,我不知道有多少层括号,以及数据的结构.我需要修改数据,并在将所有内容写入新文件之前,根据涉及数据成员的条件删除整个“条目”.在这样的文件中阅读的最佳方式是什么?谢谢!
解决方法:
我有类似的东西,但用java编写.它解析具有相同基本结构的文件,语法略有不同(没有'{‘和’}’只有缩进,就像在python中一样).这是一种非常简单的脚本语言.
基本上它的工作方式如下:它使用堆栈来跟踪最内部的指令块(或在您的情况下数据),并将每个新指令附加到顶部的块.如果它解析一个需要新块的指令,则将其推送到堆栈.如果块结束,则从堆栈中弹出一个元素.
我不想发布整个来源,因为它很大,并且可以在谷歌代码上使用(lizzard-entertainment,修订版405).您需要了解一些事项.
>指令是一个抽象类,它有一个block_expected方法来指示具体指令是否需要一个块(如循环等).在你的情况下,这是不必要的,你只需要检查'{‘.
>块扩展指令.它包含一个指令列表,并有一个添加方法来添加更多.
> indent_level返回指令文本前面有多少个空格.对于'{}’唱歌,这也是不必要的.
占位符
BufferedReader input = null;
try {
input = new BufferedReader(new FileReader(inputFileName));
// Stack of instruction blocks
Stack<Block> stack = new Stack<Block>();
// Push the root block
stack.push(this.topLevelBlock);
String line = null;
Instruction prev = new Noop();
while ((line = input.readLine()) != null) {
// Difference between the indentation of the previous and this line
// You do not need this you will be using {} to specify block boundaries
int level = indent_level(line) - stack.size();
// Parse the line (returns an instruction object)
Instruction inst = Instruction.parse(line.trim().split(" +"));
// If the previous instruction expects a block (for example repeat)
if (prev.block_expected()) {
if (level != 1) {
// TODO handle error
continue;
}
// Push the previous instruction and add the current instruction
stack.push((Block)(prev));
stack.peek().add(inst);
} else {
if (level > 0) {
// TODO handle error
continue;
} else if (level < 0) {
// Pop the stack at the end of blocks
for (int i = 0; i < -level; ++i)
stack.pop();
}
stack.peek().add(inst);
}
prev = inst;
}
} finally {
if (input != null)
input.close();
}
内容总结
以上是互联网集市为您收集整理的在python中解析未知的数据结构全部内容,希望文章能够帮你解决在python中解析未知的数据结构所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。