首页 > 解决方案 > 在python中计算字符串中的数字、字母和特殊字符

问题描述

我正在努力计算字符串中的字母、数字和特殊字符。我是初学者,正在探索 python。提前谢谢你们!

string=input("Enter string: Abc123--- ")
count1=0
count2=0
count3=0
count4=0

for i in string:
      if(i.isletter()):
          count1=count1+1
            count2=count2+1
              count3=count3+1
      count4=count2+1
print("Letter count:")
print(count1)
print("Number count:")
print(count2)
print("Special Characters count:")
print(count3)
print("Total characters count:")
print(count4)
 

标签: pythonstring

解决方案


有很多方法可以做到这一点。一个简单的方法是:

import string
def letters(text):
    letter_list = string.ascii_uppercase + string.ascii_lowercase
    counter = 0
    for i in text:
        if i in letter_list:
            counter += 1
    return counter

def numbers(text):
    number_list = "0123456789"
    counter = 0
    for i in text:
        if i in number_list:
            counter += 1
    return counter

# you can just assume rest is the special if you have specially defined chars this works
def special(text):
    letter_list = "^&*+-" 
    counter = 0
    for i in text:
        if i in letter_list:
            counter += 1
    return counter

def counter(text):
    l = letters(text)
    n = numbers(text)
    s = special(text)
    return {"numbers": l, "letters":l, "special":s}

print(counter("Abc123---"))

还有一个更压缩的版本是:

import string
def counter(text):
    number_list = "0123456789"
    letter_list = string.ascii_uppercase + string.ascii_lowercase
    letter_count = 0
    number_count = 0
    special_count = 0
    for i in text:
        if i in number_list:
            number_count += 1
        elif i in letter_list:
            letter_count += 1
        else:
            special_count += 1
    return {"numbers": number_count, "letters":letter_count, "special":special_count}
print(counter("Abc123---"))


推荐阅读