在python中计算具有特定条件的特定字符

时间:2015-03-30 16:24:35

标签: python python-3.x

我有一个清单:

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

我需要计算孤立b的数量。 (本例中实际为9)。即如果该行中有一个b(前一个或下一个字符不是b),则变量增加1。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

尝试类似

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

仅当所有字符串由 a b 组成时才有效,否则请使用re.split

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