python-3.x 如何计算字符串开头的字符数?

xdnvmnnf  于 2023-03-24  发布在  Python
关注(0)|答案(7)|浏览(131)

在Python中,如何计算字符串开头/结尾的字符数?
例如,如果字符串为

'ffffhuffh'

如何计算字符串start处的f s的个数?上面带有f的字符串应该输出4。
str.count对我来说没有用,因为字符可能在字符串的中间。

k10s72fa

k10s72fa1#

一个简短而简单的方法是使用str.lstrip方法,并计算长度差。

s = 'ffffhuffh'
print(len(s)-len(s.lstrip('f')))
# output: 4

str.lstrip([chars])
返回删除了前导字符的字符串的副本。chars参数是一个指定要删除的字符集的字符串。

vuv7lop3

vuv7lop32#

使用itertools.takewhile()试试这个方法:

import itertools as it

s = 'ffffhuffh'
sum(1 for _ in it.takewhile(lambda c: c == 'f', s))
=> 4

类似地,对于计数末尾的字符:

s = 'huffhffff'
sum(1 for _ in it.takewhile(lambda c: c == 'f', reversed(s)))
=> 4
z8dt9xmd

z8dt9xmd3#

你可以使用 regular expressionre.match来查找字符串开头的任何字符:

>>> import re
>>> my_str = 'ffffhuffh'
>>> my_char = 'f'

>>> len(re.match('{}*'.format(my_char), my_str).group())
4
93ze6v8z

93ze6v8z4#

你可以创建一个函数,遍历你的字符串,并返回输入字符串开头或结尾的所需字符的计数,如下所示:

# start = True: Count the chars at the beginning of the string
# start = False: Count the chars at the end of the string
def count_char(string= '', char='', start=True):
    count = 0
    if not start:
        string = string[::-1]

    for k in string:
        if k is char:
            count += 1
        else:
            break
    return count

a = 'ffffhuffh'
print(count_char(a, 'f'))
b = a[::-1]
print(count_char(b, 'f', start=False))

输出:

4
4
ngynwnxp

ngynwnxp5#

基于Oscar洛佩斯的回答,我想处理你提到的字符串结尾的情况:使用reversed()

import itertools as it

my_string = 'ffffhuffh'

len(list(it.takewhile(lambda c: c == my_string[-1], reversed(my_string))))
=> 1
q3qa4bjr

q3qa4bjr6#

您也可以使用itertools.groupby来查找字符串开头的第一个元素的出现次数:

from itertools import groupby

def get_first_char_count(my_str):
    return len([list(j) for _, j in groupby(my_str)][0])

样品运行:

>>> get_first_char_count('ffffhuffh')
4
>>> get_first_char_count('aywsnsb')
1
kx1ctssn

kx1ctssn7#

re.sub选择第一个字母,重复((^(\w)\2*)),len计数频率。

len(re.sub(r'((^\w)\2*).*',r'\1',my_string))

相关问题