小编sar*_*rpn的帖子

操作逗号分隔的范围列表“1-5,10-25,27-30”的Pythonic方法

我目前正在开发一个 api,他们以这种格式向我发送 str 范围:“1-5,10-25,27-30”,我需要添加或删除数字以保存格式。

如果他们给我发送“1-5,10-25,27-30”而我删除“15”,结果必须是“1-5,10-14,16-25,27-30”,如果他们发送给我“ 1-5,10-25,27-30" 并且我添加了 "26" 结果必须是 "1-5,10-30"

我一直在尝试将整个范围转换为数字列表,删除目标并再次转换它,但这样做很慢,因为他们发送 8 位数字,所以它不是最好的方法

我怎样才能做到这一点?是一个使用这种格式的库吗?

谢谢!

python algorithm

4
推荐指数
1
解决办法
114
查看次数

在 Django 中查找特定范围内的重叠日期

我在 Django 中查找重叠的日期范围时遇到问题。我有两个模型 ,reunion它有一个日期范围:

class reunion(models.Model):        
    resource = models.ForeignKey(resource, on_delete=models.CASCADE)
    start = models.DateTimeField()
    end = models.DateTimeField()
    title = models.CharField(max_length=100)
Run Code Online (Sandbox Code Playgroud)

resource模型:

class resource (models.Model):
    site = models.ForeignKey(site, on_delete=models.CASCADE)
    name = models.CharField(max_length=60)    
    def isAvaible(self, endDate, initialDate):
        try:
            self.reunion_set.get(Q(start__lt=endDate) | Q(end__gt=initialDate))  
            return False
        except:
            return True
Run Code Online (Sandbox Code Playgroud)

当我需要在特定日期范围内进行新的聚会时,我需要找到不重叠的资源,因此我使用以下方法:

def getAvaibleAccount(initialDate, endDate):
    avaibleResources = resource.objects.all()

    for avaibleResource in avaibleResources:
        if avaibleResource.isAvaible(initialDate,endDate):
            return avaibleResource           
    return None
Run Code Online (Sandbox Code Playgroud)

但我的代码表示日期范围: (12/30/2019 11:00 - 12/30/2019 12:00) 与 (12/31/2019 11:30 - 12/31/2019 12:30) 重叠如果只是比较时间而不是日期。我已经搜索了很多,但没有任何运气。

我的错误在哪里?

我将日期作为字符串获取并用 解析它们 …

django python-3.x

3
推荐指数
1
解决办法
1934
查看次数

标签 统计

algorithm ×1

django ×1

python ×1

python-3.x ×1