计算字符串中的字符数时忽略空格

时间:2021-03-29 18:34:58

标签: python

我正在尝试编写一个函数,该函数将计算输入字符串中存在的字符数并将其作为键值存储在字典中。代码部分工作,即它还计算两个单词之间存在的空格。如何避免计算空格?

#Store Characters of a string in a Dictionary

    def char_dict(string):
        char_dic = {}
        for i in string:
            if i in char_dic:
                char_dic[i]+= 1
            else:
                char_dic[i]= 1
        return char_dic
    
    print(char_dict('My name is Rajib'))

3 个答案:

答案 0 :(得分:1)

如果字符是空格,您可以只使用 continue

def char_dict(string):
    char_dic = {}
    for i in string:
        if ' ' == i:
            continue
        if i in char_dic:
            char_dic[i] += 1
        else:
            char_dic[i]= 1
    return char_dic

print(char_dict('My name is Rajib')) # {'j': 1, 'm': 1, 'M': 1, 'i': 2, 'b': 1, 'e': 1, 'a': 2, 'y': 1, 'R': 1, 'n': 1, 's': 1}

更简洁的解决方案是:

from collections import defaultdict

def countNonSpaceChars(string):
    charDic = defaultdict(lambda: 0)
    for char in string:
        if char.isspace():
            continue
        charDic[char] += 1
    return dict(charDic)

print(countNonSpaceChars('My name is Rajib')) # {'i': 2, 'a': 2, 'R': 1, 'y': 1, 'M': 1, 'm': 1, 'e': 1, 'n': 1, 'j': 1, 's': 1, 'b': 1}

答案 1 :(得分:1)

您可以删除空格 -> string = string.replace (" ","")

def char_dict(string):
    char_dic = {}
    string=string.replace(" ","")
    for i in string:
        if i in char_dic:
            char_dic[i]+= 1
        else:
            char_dic[i]= 1
    return char_dic

print(char_dict('My name is Rajib'))

答案 2 :(得分:0)

为了为您简化事情,有一个名为 collections 的库,它有一个 Counter 函数,该函数将生成值及其在字符串中出现的字典。然后,如果使用 del 关键字存在,我会简单地从字典中删除空格键。

from collections import Counter

def char_dict(string):
    text = 'My name is Rajib'
    c = Counter(text)
    if ' ' in c: del c[' ']

print(char_dict('My name is Rajib'))

这种方法可读性很强,不需要太多改造。