如何避免重复数据

时间:2019-06-20 07:17:14

标签: python text

while True:
    if bbs_number > lately_number():
        sys.stdout = open('date.txt','a')
        bbs_lists = range(highest_number() +1, bbs_number +1)
        for item in bbs_lists:
            url_number = "url" + str(item)
            try:
                result = requests.get(url_number)
                bs_number = BeautifulSoup(result.content, "lxml")
                float_box = bs_number.find("div", {"class": "float_box"})
                parameter_script = float_box
                print("bs_obj()")
            except AttributeError as e:
                print("error")
    with open('lately_number.txt', 'w') as f_last:
        f_last.write(str(bbs_number))

使用上面的while语句不会导致错误,但是重复的数据将输出到date.txt。 我想在设置range的早期阶段进行修改,而不是在稍后的阶段date.txt中删除重复项。

一种可能性是,现有的lately_number()将向range输出重复的date.txt,因为有时无法在{{1}的写入过程中正确输入该值}。

如果能帮助我提供更好的函数表达式来添加或替换,我将不胜感激。

1 个答案:

答案 0 :(得分:0)

最简单的方法是将date.txt读入一组。然后,您可以检查该集合以查看日期是否已经存在,如果没有,则将该日期写入date.txt文件。

E.G。

uniqueDates = set()
#read file contents into a set.
with open("date.txt", "r") as f:
    for line in f:
        uniqueDates.add(line.strip()) #strip off the line ending \n

#ensure what we're writing to the date file isn't a duplicate.
with open("date.txt", "a") as f:
    if("bs_obj()" not in uniqueDates):
        f.write("bs_obj")

您可能需要稍微调整一下逻辑以适合您的需求,但是,我相信这就是您要实现的目标?