Django自定义标记 - 使用两个换行符替换3个换行符

时间:2018-04-05 02:17:38

标签: python django django-templates

我正在尝试编写一个django自定义标记,用2个换行符替换3次以上的换行符(\n)。

例如,我想替换以下

{p> \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n

到目前为止,这是我的自定义标记:

@register.filter(name='replace_three_linebr')
def replace_three_linebr(value):
    """Replaces all occurrences of GT 2 adjoined line breaks with 2 line breaks from the given string."""
    return value.replace("\n\n\n", "\n\n")

1 个答案:

答案 0 :(得分:1)

value.replace("\n\n\n", "\n\n")代码段不起作用。有时你可以做的最好的事情是启动REPL并尝试声明:

>>> value = '\n\n\n\n\n\n\n\n\n \n\n\n\n\n \n\n\n \n\n'
>>> value.replace('\n\n\n', '\n\n')
'\n\n\n\n\n\n \n\n\n\n \n\n \n\n'

你必须多次申请,直到连续休息时间不超过两次:

>>> while '\n\n\n' in value:
...    value = value.replace("\n\n\n", "\n\n")
>>> value
'\n\n \n\n \n\n \n\n'

我没有对它进行过分析,但我认为使用正则表达式更有效:

>>> value = '\n\n\n\n\n\n\n\n\n \n\n\n\n\n \n\n\n \n\n'
>>> re.sub('\n\n+', '\n\n', value)
'\n\n \n\n \n\n \n\n'