【发布时间】:2018-07-28 13:47:10
【问题描述】:
假设我有两个 python 列表:
ListA = ['Jan 2018', 'Feb 2018', 'Mar 2018']
ListB = ['Sales Jan 2018','Units sold Jan 2018','Sales Feb 2018','Units sold Feb 2018','Sales Mar 2018','Units sold Mar 2018']
我需要得到一个输出:
List_op = ['Jan 2018 Sales Jan 2018 Units sold Jan 2018','Feb 2018 Sales Feb 2018 Units sold Feb 2018','Mar 2018 Sales Mar 2018 Units sold Mar 2018']
到目前为止我的方法:
res=set()
for i in ListB:
for j in ListA:
if j in i:
res.add(f'{i} {j}')
print (res)
这给了我结果:
{'Units sold Jan 2018 Jan 2018', 'Sales Feb 2018 Feb 2018', 'Units sold Mar 2018 Mar 2018', 'Units sold Feb 2018 Feb 2018', 'Sales Jan 2018 Jan 2018', 'Sales Mar 2018 Mar 2018'}
这绝对不是我正在寻找的解决方案。
我认为正则表达式在这里可能很少,但我不确定如何处理。非常感谢这方面的任何帮助。
提前致谢。
编辑:
ListA 和 ListB 中的值不一定要按顺序排列。因此,对于 ListA 中的特定月/年值,必须为 ListB 的“Sales”和“Units sold”组件匹配和选择相同的月/年值,并且需要连接起来。
我的主要目标是获取列表,稍后我可以使用该列表来生成将用于编写 Hive 查询的语句。
按照@andrew_reece 的建议添加了更多解释
【问题讨论】:
-
您能否更具体地说明您的部分匹配要求?您给出的示例很容易为其生成解决方案,但是,例如,具有“Jan Feb”、“Feb”或“2018”的字符串呢?您的数据中有哪些边缘情况,您希望如何处理它们?考虑提供更强大的示例数据来说明完整的匹配规则集。 (或者,如果您实际上只有这种格式的字符串数据,也请说明。)
标签: python string list concatenation string-matching