【问题标题】:Counting trailing new line characters in a string计算字符串中尾随的换行符
【发布时间】:2023-04-09 04:19:01
【问题描述】:

你好我有一个这样的python字符串

s = "Hello world\n\n"

我想计算字符串中尾随换行符的数量,在这种情况下它是 2。 如果我使用s.strip(),它只会删除新行并返回字符串,但不会在此过程中删除多少新行字符。 如何获取计数以及删除尾随的换行符。 谢谢。

【问题讨论】:

    标签: python string nlp


    【解决方案1】:

    使用str.rstrip:

    >>> s = "Hello world\n\n"
    >>> s.rstrip("\n")
    'Hello world'
    

    然后只需检查差异:

    >>> s = "Hello world\n\n"
    >>> len(s) - len(s.rstrip("\n"))
    2
    

    【讨论】:

    • 点赞。 trailing new line 的唯一正确解决方案
    • 所有答案似乎都有效,但与其使用 count 来查找 "\n" 使用长度之间的差异似乎更快。不知道有没有什么具体原因。由于我处理延迟问题,因此我考虑为我考虑这一点,谢谢。
    • @RaghavendraSugeeth,count 在字符串的长度被缓存时迭代字符串(因为它们是不可变的)。这就是为什么它更快
    【解决方案2】:
    s = "Hello world\n\n" 
    s.count('\n')
    

    返回 2

    然后

    s.strip('\n')
    

    【讨论】:

    • s.strip('\n') 也只删除换行符......并且OP希望有一种方法只有一种方法......
    【解决方案3】:

    您可以在删除换行符之前计算它们的数量。

    count = s.count("\n");
    

    应该返回新行数。

    【讨论】:

    • OP 想要一种计算换行符并完全删除换行符的方法。
    • 啊,OP对此并不太具体,否则我想念。
    • s.count() 计算 所有 个换行符,也包括那些出现在字符串中间某处的字符,而不仅仅是 OP 指定的尾随字符。
    【解决方案4】:

    快速,但也许“脏”,是分两步完成:

    s = "Hello world\n\n"
    s.count("\n")
    

    计数:2

    紧随其后

    s.strip("\n")
    

    【讨论】:

    • 我认为分两步拆分一点也不脏。 @U9-Forward 因为字符串是不可变的,所以没有这样的方法。对字符串应用转换的方法返回新字符串。
    • @ U9-Foward 我真的不同意 OP 明确要求以一种方法做到这一点。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-03
    相关资源
    最近更新 更多