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,计算最后一行字符串中的字符[关闭]的主要内容,如果未能解决你的问题,请参考以下文章