繁体   English   中英

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

[英]Ignore Whitespace while counting number of characters in a String

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

#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'))

如果字符是空格,您可以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}

可以删除空格-> 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'))

为了简化您的操作,有一个名为collections的库,它有一个Counter function,它将生成一个值字典及其在字符串中的出现。 然后,如果使用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'))

这种方法可读性很强,不需要太多的重新发明。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM