我正在编写一个文件解析器,我希望能够确定它将为我返回的女巫“数据字段”。
我开始学习 python 并且仍然习惯于像 Java 程序员一样思考,所以这个问题更多的是关于如何设计我的模块,而不是关于如何具体解析文件。
根据上下文,文件的每一行都有固定数量的字符,并且每个信息都包含在特定索引之间。例如。:
XX20120101NAME1CITYA
XY20120101NAME2CITYB
在这个虚构的例子中,从索引 0 到 2 你有一个信息,从 2 到 10 有另一个信息,依此类推......
使用 Java,我通常会创建一个表示不同信息片段的枚举器,每个“存储”起始索引和结束索引。在我的解析类中,我会设计一个可用的方法来接受n 个不同的枚举。例如。:
enum FileInformation {
INFO01(0,2), INFO02(2,10), INFO03(10,15), INFO04(15,20);
int startIndex;
int endIndex;
public FileInformation(int si, int ei) {
this.startIndex = si;
this.endIndex = ei;
}
public int getStartIndex() { return si; }
public int getEndIndex() { return ei; }
}
public Whatever parse(FileInformation... infos) {
// Here I would iterate through infos[],
// using its start and end index to retrieve only what I need.
}
我知道我可能不应该在python中使用同一行虽然,特别是因为语言不允许它(python 中没有枚举)并且因为我认为python可以不那么冗长,但我不知道一个好的设计实践来达到同样的结果。
值得一提的是,我不想让模块的用户暴露于不必要的复杂性,或者强迫他知道每个信息的索引。模块的用户最好能够确定他想要的女巫信息及其顺序。
那么,您对以优雅的方式解决此要求有任何见解吗?提前致谢