簡體   English   中英

計算字符串中小寫和大寫字母的函數

[英]Function to count small and Capital letters in a string

我寫了一個函數,它接受一個字符串並返回該字符串中小寫字母的數量和大寫字母的數量。 該程序適用於單個單詞,但一旦我在兩個單詞之間添加兩個包含“空格”的單詞,就會把事情搞砸。 空格也很重要。 你的想法是什么?

def myfunc(s):
    s = str(s)

    upperl = 0
    lowerl = 0
    for i in s:
        if i == i.lower():
            lowerl += 1
        if i == i.upper():
            upperl += 1
        if i == ' ':
            continue
    return upperl,lowerl

x = myfunc('hello G')
print (x)

從單詞 'hello G' 我們期望大寫字母和小寫字母計數為1,5但兩個單詞之間的空格使其成為2,6

問題是' ' == ' '.upper()' ' == ' '.lower()都是正確的,並且您沒有檢查您當前是否正在處理字母數字字符或其他東西。 相反,您可以檢查您使用的是小寫字母還是大寫字母。

嘗試這個:

def calculate_case_count(string: str):
    string = str(string)
    upper_letter_count = 0
    lower_letter_count = 0
    for letter in string:
        if letter.islower():
            lower_letter_count += 1
        elif letter.isupper():
            upper_letter_count += 1
    return upper_letter_count, lower_letter_count


result = calculate_case_count('hello    G ')
print(result) # (1, 5)

在這里使用正則表達式將是更清潔的解決方案

import re

def count_letter_cases(text):
    n_lower = len(re.findall("[a-z]", text))
    n_upper = len(re.findall("[A-Z]", text))
    return n_lower, n_upper

print(count_letter_cases("Hello Goat"))
## Result: (7,2)
from collections import Counter

def count_cases(strng):
    counts = Counter(strng)
    upper = 0
    lower = 0
    for char, count in counts.items():
        if char.isupper():
            upper += count
        elif char.islower():
            lower += count
    return (upper, lower)

編輯:刪除了string模塊。 使用內部islowerisupper方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM