python中最后一行计算字符(包括空格)的最佳方法是什么?
实施例
"AAAAAAA
BBBB
CCCCC
DDD"
并且函数应该返回11(8个空格和3个D)
答案 0 :(得分:4)
仅从末尾(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
答案 1 :(得分:3)
如果这是一个带有嵌入换行符的单个字符串,那么简单的方法就是将其拆分为行,然后只取最后一行的长度。
len(s.split('\n')[-1])
答案 2 :(得分:2)
def get_last_line_len(s)
return len(s.split('\n')[-1])
答案 3 :(得分:2)
只需将字符串与splitlines
分开,然后获取最后一项len
,即-1
索引:
>>> len(example.splitlines()[-1]) # It's actually twelve long, not eleven.
12