字符串统计:分类统计、求和

字符串数量统计

from functools import reduce


def count_alpha(str='', only_alpha=True):
    '''
    分类统计字符数量
    :param str: 被统计字串。如:"hello world;"
    :param only_alpha: 只统计字母开关。True只统计字母,False只统计字母、数字、字符。
    :return: 分类统计结果清单。如:[('h', 1), ('e', 1), ('l', 3), ('o', 2), ('w', 1), ('r', 1), ('d', 1), (';', 1)]
    '''
    alpha_list = []  # 临时变量
    alpha_count_list = []  # 存储统计结果
    for ch in str1:
        # print(ch)
        if only_alpha:
            # 只统计字母
            if ch.isalpha():  # 只统计字母
                # print(ch)
                if ch not in alpha_list:
                    alpha_list.append(ch)
                    n = str1.count(ch)
                    alpha_count_list.append((ch, n))
                    # print("%s: %s" % (ch, n))
        else:
            # 只统计字母、数字、字符,不统计空格
            if not ch.isspace():  # 只统计非空格
                # print(ch)
                if ch not in alpha_list:
                    alpha_list.append(ch)
                    n = str1.count(ch)
                    alpha_count_list.append((ch, n))
                    print("%s: %s" % (ch, n))
    return alpha_count_list


if __name__ == '__main__':
    str1 = "hello world;"

    r = count_alpha(str1, only_alpha=False)
    # 安照原有顺序排序
    print(r)
    # 按照字母排序,a-z
    print(sorted(r, key=lambda x: x[0]))
    # 按照统计数量大小排序,由大到小
    print(sorted(r, key=lambda x: x[1], reverse=True))

    # 统计总数求和
    sum = reduce(lambda x, y: [0, x[1] + y[1]], r)[1]
    print(sum)

  

输出:

h: 1
e: 1
l: 3
o: 2
w: 1
r: 1
d: 1
;: 1
[('h', 1), ('e', 1), ('l', 3), ('o', 2), ('w', 1), ('r', 1), ('d', 1), (';', 1)]
[(';', 1), ('d', 1), ('e', 1), ('h', 1), ('l', 3), ('o', 2), ('r', 1), ('w', 1)]
[('l', 3), ('o', 2), ('h', 1), ('e', 1), ('w', 1), ('r', 1), ('d', 1), (';', 1)]
11

原文地址:https://www.cnblogs.com/andy9468/p/12997869.html