python - 在不为数据格式编写解析器的情况下,我应该如何继续解析表格数据的字段?
问题描述
我们有很多来自供应商的列表,其中包含不同格式的产品数据,并且在每个列表中都有许多不同的方法来描述产品一个简短的示例列表:
产品类别 | 描述 |
---|---|
一个 | 11,3*3/3 蓝色 |
一个 | 11.5x4 黄木 |
乙 | 特殊 11.5x4 黄色木材 |
乙 | 规格 11,3*3/3 蓝色 |
您可以看到列表本身是非常不同的。通常只有一列具有多种不同格式的描述。我们仅针对该字段的内容创建并运行解析器,以将数据转换为结构化形式。解析器通常从不同的可能变体开始:
product description: variant1|variant2....
variant1: dims color material?
variant2: spec dims color material
....
这些例子不是最好的,但我认为这足以理解我们所做的事情。稍后我们可以轻松地从解析的树中构建一个漂亮的列表,每个人都很高兴。
但是现在我们遇到了一些变体依赖于另一列中的另一个字段的问题。例如,我想添加另一个这样的规则:
When value in Product Type =="A":
variant1: dims color material?
我想让它尽可能简单,不想增加太多逻辑。我也不想每次都在这个简短的翻译文件中完全解析 csv/excel/tab_seperated/txt。我的一个想法是将每一行转换为由特定符号连接的长字符串,因此解析后的字符串如下所示:
A my_special_field_seperator 11.5x4 yellow wood
然后用户只需设置此分隔符并可以像这样正常传递它:
variant1: "A" _sep dims color material?
但这对我来说似乎真的很hacky和容易出错,我想知道是否有更好的解决方案。有一个更好的方法吗?我没有看到漂亮而优雅的解决方案吗?
解决方案
推荐阅读
- javascript - PHP 表单不显示 ÆØÅ
- matlab - 改进 Matlab 中的散点图
- javascript - 不明白幻灯片如何在没有设置 FOR 或 WHILE 循环的情况下循环播放?
- node.js - AWS:将子域指向不同的弹性 beanstalk 环境
- ruby-on-rails - 无法通过 React to Rails API 发布
- python - 如何更改字典列表中的字典键?
- java - 如何根据第一个微调器中的选择从数据库中过滤第二个微调器值?
- c++ - Mac OSX 不推荐使用的 API - FSRef 参考;
- java - Spring Boot 使用 1.5.6 发布重新打包的子模块 jar
- css - 引导按钮扩展容器