在填充文件时实时删除文件中的重复项

时间:2015-09-21 17:02:12

标签: python json

我正在使用Python并希望分享我的问题,如果有人遇到类似的问题。我在编写代码之前试图解决我的问题。 (三思而后行,写一次。)

假设我有一个文件outfile_1.json,每隔0.5秒填充一次来自外部网络源的数据,所有这些都是实时的。假设另一个程序读取文件outfile_1.json并删除重复文件,如何实时删除重复项?

我的想法是:

  1. 从底部读取前100行outfile_1.json并删除 重复
  2. 记录删除了多少重复项
  3. 从100 - total_removed_lines + 100移至文件中的某个位置 是的,我们手边有100条线,10条重复后有90条线。下一个 起始线将是第90行。
  4. 我们在while循环中重复1到3次,直到下午6点。当我们的程序停止时。
  5. 我确信上述内容会在某些时候失败,但我不知道如何以及何时这样我想是否有人可以提供一些伪代码或定义更好的方法。

    这是JSON文件的示例副本:注意第一个和第二个相同,因此必须删除1个。

    {"price": "$195.57", "volume": "100", "tradetime": "10:51:03", "timeframe": "3", "date": "09-21-2015", "symbol": "DIP"}
    {"price": "$195.57", "volume": "100", "tradetime": "10:51:03", "timeframe": "3", "date": "09-21-2015", "symbol": "DIP"}
    {"price": "$193.52", "volume": "100", "tradetime": "10:51:03", "timeframe": "3", "date": "09-21-2015", "symbol": "DIP"}
    {"price": "$197.59", "volume": "131", "tradetime": "10:51:03", "timeframe": "3", "date": "09-21-2015", "symbol": "DIP"}
    {"price": "$197.58", "volume": "300", "tradetime": "10:51:02", "timeframe": "3", "date": "09-21-2015", "symbol": "DIP"}
    {"price": "$197.58", "volume": "100", "tradetime": "10:51:01", "timeframe": "3", "date": "09-21-2015", "symbol": "DIP"}
    

1 个答案:

答案 0 :(得分:0)

现有条目是否为可清洗类型?如果没有,只需将每个转换为其字符串图像。您可以使用整行作为字典或集合元素的键。称之为"参考"。 保持该设置有效。然后,只需将100个新行中的每一行与#34;参考"进行比较。用一个简单的" in"检查。

让新一批条目成为名为" new_batch"的字符串列表。

dup_count = 0
new_count = 0
for line in new_batch:
    if line in reference:
        dup_count += 1
    else:
        new_count += 1
        reference += line   # ... or however you add a new element to this object

print dup_count, "duplicates removed"
print new_count, "new elements"

我相信你可以从这里正确使用new_count和dup_count。