[英]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
模塊。 使用內部islower
和isupper
方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.