python,计算最后一行字符串中的字符[关闭]

Posted

技术标签:

【中文标题】python,计算最后一行字符串中的字符[关闭]【英文标题】:python, count characters in last line string [closed] 【发布时间】:2015-01-08 07:55:39 【问题描述】:

python 中从最后一行计算字符(包括空格)的最佳方法是什么?

例子

"AAAAAAA
 BBBB
    CCCCC
         DDD"

并且函数应该返回 11(8 个空格和 3 x D)

【问题讨论】:

你能告诉我们你尝试了什么吗? 您尝试过 len、split 和 index 访问的基本组合吗? 【参考方案1】:

将字符串从末尾(str.rsplit)拆分一次,得到最后一项的长度:

>>> s = """AAAAAAA
 BBBB
    CCCCC
         DDD"""

>>> s.rsplit('\n', 1)
['AAAAAAA\n BBBB\n    CCCCC', '         DDD']
#On the other hand simple str.split will split the string more than once:
>>> s.split('\n')
['AAAAAAA', ' BBBB', '    CCCCC', '         DDD']

现在只需获取最后一项的长度:

>>> len(s.rsplit('\n', 1)[-1])
12

有了更大的数据,这将非常快:

>>> s = """AAAAAAA
 BBBB
    CCCCC
         DDD"""
>>> s = '\n'.join([s]*1000)  #4000 lines
>>> %timeit len(s.split('\n')[-1])
10000 loops, best of 3: 84.9 µs per loop
>>> %timeit len(s.splitlines()[-1])
10000 loops, best of 3: 91.3 µs per loop
>>> %timeit len(s.rsplit('\n', 1)[-1])
1000000 loops, best of 3: 1.62 µs per loop

【讨论】:

这一定是目前最好的答案,因为它针对大数据进行了优化。【参考方案2】:

如果这是一个带有嵌入换行符的字符串,简单的方法是将它分成几行,然后取最后一行的长度。

len(s.split('\n')[-1])

【讨论】:

来吧,惩罚我在一个糟糕的问题上留下了一个好的答案。我可以接受。【参考方案3】:

只需将字符串用splitlines 拆分,然后取最后一项的len,即索引-1

>>> len(example.splitlines()[-1])  # It's actually twelve long, not eleven.
12

【讨论】:

【参考方案4】:
def get_last_line_len(s)
    return len(s.split('\n')[-1])

【讨论】:

+1 以抵消反对票。它是在 Mark Ransom 给出足够答案的一分钟内发布的,除了它将逻辑封装到一个描述性命名的函数中之外,它与它并没有什么不同。因此,不成为纯粹的骗子就足够不同了。

以上是关于python,计算最后一行字符串中的字符[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

sql,如何把最后一个/去掉 ??

android 计算textview一行显示多少字

python常见面试题讲解字符串最后一个单词的长度

python常见面试题讲解字符串最后一个单词的长度

python中是不是有用于计算两个字符串相似度的函数

java 字节流和字符流