计算段落中出现的特殊字符数[^& $#]

时间:2017-09-18 17:23:32

标签: python

我想计算使用python出现在段落中的特殊字符[^&*$]的数量。任何人都可以帮我简洁地做到这一点吗?我不想用于循环条件。

3 个答案:

答案 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:)