我想计算使用python出现在段落中的特殊字符[^&*$]
的数量。任何人都可以帮我简洁地做到这一点吗?我不想用于循环条件。
答案 0 :(得分:3)
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)
将specials_chars
替换为您想要计算的任何字符。
答案 1 :(得分:2)
这可能是重复但您可以使用正则表达式re.sub
和len,即将所有单词字符\w
替换为''
,以便最终得到非单词字符或特殊字符。
import re
x = "asdfklsdf#$&^#@!"
new = re.sub('[\w]+' ,'', x)
输出:#$&^#@!
len(new)
7
如果您只想计算那些字符,那么
new = re.sub('[^\^&*$]+' ,'', x)
答案 2 :(得分:1)
re.findall
... 如果你有一个输入字符串:
para = "hello #123 ^@"
您可以使用re.findall
获取regex
的匹配列表。因此,如果我们使用regex
:' [\ w]`,我们可以获得字符串中所有非特殊字符的列表。然后简单地从原始字符串的长度中减去该列表的长度,以获得特殊字符的数量:
specialChars = len(para) - len( re.findall('[\w]', para) )
返回3
:)