是否可以在 PYTHON 的一个命令中对多个字符串使用 .count ?

2024-03-17

我想知道是否可以使用 .count 函数对多个字符串进行计数?

string = "abcdefg"
string.count("." or "!")

当我使用 or 命令时,它只给出 1 个变量的计数,但我想要总数。如何将它组合起来,使其计入 2 个字符串,而不将其拆分为两个函数?

Thanks


不幸的是,内置字符串计数函数不支持在一次调用中对多个字符进行计数。其他受访者都使用多次电话字符串计数并对数据进行多次传递。我相信您的问题表明您不想拆分通话。

如果您希望仅在一次调用中进行单遍搜索,还有其他几种方法。

一种方法是使用正则表达式,例如len(re.findall(r'[ab]', s))它计算的数量a or b一次通过的字符。您甚至可以以节省内存的迭代器形式执行此操作,sum(1 for _ in re.finditer(r'[ab]', s)).

另一种方法将集合与filter https://docs.python.org/2.7/library/functions.html#filter。例如,len(filter({'a', 'b'}.__contains__, s))还统计了数量a or b一次通过的字符。您还可以通过一种节省内存的迭代器形式来执行此操作,sum(1 for _ in itertools.ifilter({'a', 'b'}.__contains__, s)).

>>> s = 'abracadabra'
>>> re.findall(r'[ab]', s)
['a', 'b', 'a', 'a', 'a', 'b', 'a']
>>> filter({'a', 'b'}.__contains__, s)
'abaaaba'

只是为了笑,还有另一种方法,但有点另类,len(s) - len(s.translate(None, 'ab'))。这从总字符串长度开始,减去翻译字符串的长度,其中a and b字符已被删除。

旁注:在 Python 3 中,filter()已更改为返回迭代器。所以新的代码将变成len(list(filter({'a', 'b'}.__contains__, s))) and sum(1 for _ in filter({'a', 'b'}.__contains__, s)).

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

是否可以在 PYTHON 的一个命令中对多个字符串使用 .count ? 的相关文章

随机推荐