我们有很多来自供应商的列表,其中包含不同格式的产品数据,并且在每个列表中都有许多不同的方法来描述产品一个简短的示例列表:
产品类别 | 描述 |
---|---|
一个 | 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和容易出错,我想知道是否有更好的解决方案。有一个更好的方法吗?我没有看到漂亮而优雅的解决方案吗?