Counter创建一组所有字符,给出迭代次数的上限。
给定一个字符串text:
import string
import collections as ct
special_chars = string.punctuation
sum(v for k, v in ct.Counter(text).items() if k in special_chars)
Run Code Online (Sandbox Code Playgroud)
替换specials_chars为您想要计算的任何字符。
这可能是重复的,但您可以使用 regexre.sub和 len ie 将所有单词字符替换\w为'',以便最终得到非单词字符或特殊字符。
import re
x = "asdfklsdf#$&^#@!"
new = re.sub('[\w]+' ,'', x)
Run Code Online (Sandbox Code Playgroud)
输出 :#$&^#@!
len(new)
7
Run Code Online (Sandbox Code Playgroud)
如果您只想计算这些字符
new = re.sub('[^\^&*$]+' ,'', x)
Run Code Online (Sandbox Code Playgroud)