簡體   English   中英

Django自定義標簽-用兩個換行符替換3個以上的換行符

[英]Django Custom Tag - Replace more than 3 line breaks with two line breaks

我正在嘗試編寫django自定義標簽,用2個換行符替換3次以上的換行符( \\n )。

例如,我想替換以下內容

\\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")

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'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM