我有一个类似于...的有声读物部分列表。
20,000 Leagues Under The Sea
A Tale of Two Cities Part 1 of 2
A Tale of Two Cities Part 2 of 2
A Canterbury Tale 1
A Canterbury Tale 2
Great Expectations
而我正试图将列表折叠为类似于Db规范化...
20,000 Leagues Under The Sea
(Parts = {"20,000 Leagues Under The Sea"})
A Tale of Two Cities
(Parts = {"A Tale of Two Cities Part 1 of 2", "A Tale of Two Cities Part 2 of 2"})
A Canterbury Tale
(Parts = {"A Canterbury Tale 1", "A Canterbury Tale 2"})
Great Expectations
(Parts = {"Great Expectations"})
现在,我可以提取所有以某些数字模式结尾的条目,但我需要处理多种格式(1/2
,1 of 2
或2
) 。删除数字后,我可以删除任何可选的“部分”,
但这一切看起来都很笨重。感觉应该有一种更好的方法来识别群体 - 可能是“查找仅在最后n个字符中有所不同的条目”的内容?
有人可以用优雅的方式指出我吗?
答案 0 :(得分:1)
如果你的5-6线kluge工作,为什么不保留它?
在一般情况下,这是一个相当困难的问题,因为有很多不同的方式来标记不同的剧集。我们在某种程度上通过YouTube视频解决了这个问题,但它远非完美。正如你所说,有许多不同的格式,虽然它们采用两种一般形式之一:
<name><episode>
<episode><name>
是图书/视频系列的名称,可以采用多种形式。但即使那些通常是:
[word]<epidose-number>[of][<total-episodes>]
[word]是可选的,可以是几个单词中的任何一个:“part”,“episode”,“installment”,“scene”等。[of]通常存在,通常是“of”,“/”, “ - ”等。有时作者会混合同一系列的格式。命名不一致会使问题进一步复杂化。所以你会看到:
My vacation, part 1 of 3
Vacation, tape 2
Part 3 of my vacation
如果您可以标准化您的剧集命名和编号,问题就会变得更容易解决。我们到达的解决方案使用了字典,但您可以通过排序来完成。我们的解决方案基本上是:
一旦我们这样做,按名称和剧集对列表进行排序就很简单了。
您选择的解决方案完全取决于数据的清洁程度。如果它只有少数不同的剧集格式相当干净,我强烈建议使用正则表达式解决方案。