在python中使用特定条件对特定字符进行计数

2024-04-25 22:39:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个清单:

>>> data
['abaaabababbbbaaabaab', 'baaabbbbabaabbaabaab']

我需要计算孤立的b的数量(在本例中实际上是9)。i、 e.如果行中有一个b(前一个或下一个字符不是b),则变量增加1。你知道吗


Tags: data数量字符本例abaaabababbbbaaabaabbaaabbbbabaabbaabaab
2条回答
>>> import re
>>> data = ['abaaabababbbbaaabaab', 'baaabbbbabaabbaabaab']
>>> sum(1 for part in data for s in re.findall('[b]+', part) if len(s) == 1)
9

您可以编写一个更智能的正则表达式,只匹配您想要的正则表达式。这将允许您省略if len(s) == 1。你知道吗

编辑。更聪明的正则表达式可能不值得,因为它更难理解:

>>> sum(len(re.findall('(?<!b)b(?!b)', part)) for part in data)
9

试试这样的

sum(len(c) == 1 for s in data for c in s.split('a')) # 9

只有当所有字符串都由ab组成时,这才有效,否则使用re.split

import re
sum(len(c) == 1 for s in data for c in re.split(r'[^b]{1}', s)) # 9

相关问题 更多 >