簡體   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