在 Django 中切片动态生成的字符串的中间

slice the middle of a dynamically generated string in Django

有没有办法(使用 Django 过滤器或任何其他语言)查找和切片动态生成的字符串的某些部分?我已经尝试了 slice 方法和 truncate 方法

{{variable|slice:"130:-60"}} 或 {{variable|truncatechars:255 }}

但是这些方法都不是完全正确的.....我正在处理天气警报(由国家气象局提供)并且每个警报的正面和(有时)背面都有一个唯一的 ID也。

唯一 ID # 和长度在 60 到 130 个字符之间变化,最后的 ID 是经度和纬度,但它只包含大约 1/2 的时间。

所以我正在寻找/编写 "sniff out" 的代码并删除唯一 ID,只提供用户可以看到的文本。

执行此操作的正确方法是什么?

这是一个警报示例:

INC077-437-75584393-/09584738.EGY/W.0027//KT.0215401321/ 1100 AM CDT 2015 年 5 月 13 日星期三 佛罗里达州奥兰多附近的密西西比河将继续泛滥。 从今天晚上到时间结束,星期三早上 600 点,舞台高度为 30.5 英尺。 洪水位为 30.6 英尺 影响到今晚 1000 点,一些水开始填满一些沟渠。 && 纬度...经度 4125 5845 5458 6548 8964 5124 1234 8706 $$

并使用代码(我调用变量的地方)我希望它是:

1100 AM CDT 2015 年 5 月 13 日星期三,佛罗里达州奥兰多附近的密西西比河将继续泛滥。 从今天晚上到时间结束,星期三早上 600 点,舞台高度为 30.5 英尺。 洪水位为 30.6 英尺 影响到今晚 1000 点,一些水开始填满一些沟渠。

但我无法剪切或截断,因为每个天气警报的长度都不同,每个唯一 ID 都是不同的 # 和不同的长度。

感谢任何帮助!

您可以向模型添加自定义方法,例如:

class Weather(models.Model):
    alert = models.TextField()

    @property
    def get_id(self):
        return self.alert.split('/')[-1]

在您的模板中:

<p>{{ weather.get_id }}</p>

您还可以创建自定义模板过滤器:

from django import template

register = template.Library()

@register.filter(name='get_id')
def get_id(value):
    return value.split('/')[-1]

并以这种方式在您的模板中使用它:

<p>{{ weather|get_id }}</p>