我正在尝试编写一个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")
答案 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'