如何计算Python中字符串开头/结尾的字符数?
例如,如果字符串是
'ffffhuffh'
如何计算字符串开始的f
个数?带有f
的上述字符串应输出4。
str.count
对我没用,因为角色可能位于字符串的中间。
答案 0 :(得分:9)
一种简单的简单方法是使用str.lstrip
方法,并计算长度的差异。
s = 'ffffhuffh'
print(len(s)-len(s.lstrip('f')))
# output: 4
返回删除了前导字符的字符串副本。字符 argument是一个字符串,指定要删除的字符集。
答案 1 :(得分:5)
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
答案 2 :(得分:1)
您可以使用正则表达式和re.match
来查找字符串开头的任何字符的出现位置:
>>> import re
>>> my_str = 'ffffhuffh'
>>> my_char = 'f'
>>> len(re.match('{}*'.format(my_char), my_str).group())
4
答案 3 :(得分:0)
基于Oscar Lopez的回答,我想处理你提到的字符串结尾的情况:使用reversed()
import itertools as it
my_string = 'ffffhuffh'
len(list(it.takewhile(lambda c: c == my_string[-1], reversed(my_string))))
=> 1
答案 4 :(得分:0)
您可以创建一个函数并遍历您的字符串并在输入字符串的开头或结尾返回所需字符的计数,如下例所示:
# start = True: Count the chars in the beginning of the string
# start = False: Count the chars in 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
答案 5 :(得分:0)
您也可以使用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
答案 6 :(得分:0)
re.sub选择带重复的第一个字母((^(\ w)\ 2 *)),len计数频率。
len(re.sub(r'((^\w)\2*).*',r'\1',my_string))