【Python】统计字符串中英文、空格、数字、标点个数

原创 2017年03月25日 22:01:51

题外话:今天打酱油的做了网易数据挖掘工程师的在线笔试题,被打击了。

本文代码可在 这里 下载。


问题

在网上无意间看到这么一个题目:统计一个字符串中的中英文、空格、数字、标点符号个数。
正好再熟悉一下 Python 中字符串相关方法,所以来做一下。


代码

# coding: utf-8

import string
from collections import namedtuple


def str_count(s):
    '''找出字符串中的中英文、空格、数字、标点符号个数'''

    count_en = count_dg = count_sp = count_zh = count_pu = 0
    s_len = len(s)
    for c in s:
        if c in string.ascii_letters:
            count_en += 1
        elif c.isdigit():
            count_dg += 1
        elif c.isspace():
            count_sp += 1
        elif c.isalpha():
            count_zh += 1
        else:
            count_pu += 1
    total_chars = count_zh + count_en + count_sp + count_dg + count_pu
    if total_chars == s_len:
        return namedtuple('Count', ['total', 'zh', 'en', 'space', 'digit', 'punc'])(s_len, count_zh, count_en, count_sp, count_dg, count_pu)
    else:
        print('Something is wrong!')
        return None
    return None


s = '上面是引用了官网的介绍,意思就是说 TensorBoard 就是一个方便你理解、调试、优化 TensorFlow 程序的可视化工具,你可以可视化你的 TensorFlow graph、学习参数以及其他数据比如图像。'
count = str_count(s)
print(s, end='\n\n')
print('该字符串共有 {} 个字符,其中有 {} 个汉字,{} 个英文,{} 个空格,{} 个数字,{} 个标点符号。'.format(count.total, count.zh, count.en, count.space, count.digit, count.punc))

将上面的程序保存到 str_count.py,然后执行测试下:

$ python str_count.py

上面是引用了官网的介绍,意思就是说 TensorBoard 就是一个方便你理解、调试、优化 TensorFlow 程序的可视化工具,你可以可视化你的 TensorFlow graph、学习参数以及其他数据比如图像。

该字符串共有 107 个字符,其中有 59 个汉字,36 个英文,6 个空格,0 个数字,6 个标点符号。

那个用于测试的字符串 s 源自 我的一篇关于 TensorBoard 的博文,首先输出原始字符串,然后输出中英文、空格、数字、标点符号各自的个数。

以后有好的想法再来优化这个程序,大家有什么好的想法也欢迎可以在评论区留言。


END

版权声明:本文为博主原创文章,未经授权禁止转载。

Python中使用中文字符

unicode指字符集 utf8指编码方式存储 1、告诉解释器文件的编码方式 python 2中在文件前加上#conding=utf8 也可以用_*_ conding:gbk _*_ Pyth...
  • u013052394
  • u013052394
  • 2017年07月02日 14:49
  • 900

python小练习1:给一个字符串,统计其中的数字、字母和其他类型字符的个数

最近一直在学习python,在此之间,我无时无刻不在感受着python这个语言的强大魅力。比起C语言,他简单易懂、易学。其语法的简单便捷让我对他产生了不浓厚的兴趣,所以,现在在工作之余,我都会练习py...
  • MTbaby
  • MTbaby
  • 2016年10月12日 18:03
  • 11626

python获取中文字符串长度

print len('哈哈'.decode('utf-8')) #unicode格式 print len('哈哈') #utf-8格式
  • Yan456jie
  • Yan456jie
  • 2016年09月02日 22:43
  • 5230

python统计字符串中中英文、空格、数字、标点个数

  • 2017年03月25日 20:16
  • 25KB
  • 下载

使用python统计字符串中的字符个数。

要求定义函数countchar()统计字符串中所有出现的字母的个数(允许输入大写字符,并且计数时不区分大小写)。输入格式: 字符串输出格式: 列表输入样例: Hello, World!输出样例:...
  • xyq15438
  • xyq15438
  • 2016年10月10日 19:32
  • 4744

python统计字母、空格、数字等字符个数

# -*- coding: utf-8 -*- # 要求:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。 def count(s): count_a=count_z=cou...
  • Guo_Apple
  • Guo_Apple
  • 2017年04月06日 15:29
  • 5583

python统计字符串里每个字符的次数

看到defautldict的用法后,才知道原来可以这么简单的。 python统计字符串里每个字符的次数 s='hello world nihao' d=collections.defaultd...
  • yagamil
  • yagamil
  • 2016年05月07日 10:15
  • 1760

python使用codecs模块进行文件操作-读写中英文字符

由于python中默认的编码是ascii,如果直接使用open方法得到文件对象然后进行文件的读写,都将无法使用包含中文字符(以及其他非ascii码字符),因此建议使用utf-8编码。 使用方法 ...
  • chenyxh2005
  • chenyxh2005
  • 2017年05月18日 13:30
  • 4301

python实现去除文本中的中文符号和英文符号

python实现去除文本中的中文符号和英文符号import re line = line.decode("utf8") string = re.sub("[\s+\.\!\/_,$%^*(...
  • perfectmanman
  • perfectmanman
  • 2015年09月02日 21:44
  • 6557

python 过滤中文、英文标点特殊符号

在工作中经常遇到很多特殊的标点符号,像中文标点符号,英文标点符号。英文的标点符号比较容易过滤,而过滤中文的标点符号较麻烦。下面是从邮件中过滤特殊符号的方式供参考。...
  • mach_learn
  • mach_learn
  • 2014年12月05日 10:41
  • 27297
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【Python】统计字符串中英文、空格、数字、标点个数
举报原因:
原因补充:

(最多只允许输入30个字)