【发布时间】:2019-03-27 21:14:46
【问题描述】:
我有两个文件。我想获取 Master.txt 中但不在 Subset.txt 中的新订单的 id 列表。 Master.txt 还包含现有订单(EXIST),这些订单不在 Subset.txt 中,因此它不是文件的 1:1 比较。
foundCount = 0
notFoundCount = 0
notFoundDict = []
for i, logLine in enumerate(open(master, "r").readlines()):
if len(logLine ) > 1:
if "NEW" in log_line:
newItemDict = dict(item.split(":") for item in newItem.split(","))
id = newItemDict ['id']
for i, subsetLogLine in enumerate(open(subset, "r").readlines()):
if id in subsetLogLine and "NEW" in subsetLogLine:
foundCount += 1
break
else:
notFoundCount += 1
notFoundDict.append(id)
不幸的是,它在 Master.txt 的第一行中获得了唯一 id,将其与 Subset.txt 中的一行匹配,但所有其他行都没有该 id,因此它将所有这些 id 添加到 notFoundDict .
所以我希望它搜索所有文件 B,如果在整个文件中找不到,则附加该 id,如果找到则中断。
Master.txt
{"Type":"NEW","id":201753427,"time":"08:11:57.545","title":"string"}
{"Type":"NEW","id":201753195,"time":"08:11:58.616","title":"string"}
{"Type":"EXIST","id":201753195,"time":"08:11:59.639","title":"string"}
{"Type":"UPDATE","id":201753195,"time":"08:13:57.319","title":"string"}
{"Type":"UPDATE","id":201753195,"time":"08:15:51.119","title":"string"}
{"Type":"NEW","id":201753199,"time":"08:19:13.114","title":"string"}
Subset.txt
{NEWORDID="201753427" ORDTYPE="NEW" ORIGIN="LocationA" USERNAME="..." TIME="08:11:57.645"}
{NEWORDID="201753195" ORDTYPE="NEW" ORIGIN="LocationC" USERNAME="..." TIME="08:11:57.619"}
{NEWORDID="201753199" ORDTYPE="NEW" ORIGIN="LocationC" USERNAME="..." TIME="08:19:13.114"}
【问题讨论】:
-
请贴一个简单的例子,每个文件中包含一两行数据,用于测试目的
-
已更新。如您所见,两个文件的格式/内容略有不同。但是 OrderId 和 Order 的类型应该是唯一的。但是主文件的 id 可以是相同的,但在加上 'type' 时是唯一的
-
从文件 A->subsea.txt 和文件 B->master.txt 更改问题并参考 NewOrdID 等。以便于理解。