python,计算最后一行字符串中的字符

时间:2014-11-11 17:10:32

标签: python string

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

实施例

"AAAAAAA
 BBBB
    CCCCC
         DDD"

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

4 个答案:

答案 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